国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

PyQt5每天必學(xué)之布局管理

2020-02-22 23:43:44
字體:
供稿:網(wǎng)友

在GUI編程中有一個不容忽視的部分,那就是布局管理。布局管理掌控著我們的控件在應(yīng)用程序窗口如何擺放。布局管理可以通過兩種方式來完成。我們可以使用絕對定位或布局類兩種方法控制程序窗口中的控件位置。

絕對定位

每個控件按程序員指定的位置放置。當(dāng)您使用絕對定位,我們要了解以下限制:

如果我們調(diào)整窗口的大小控件的大小和位置保持不變 在不同平臺上應(yīng)用程序看起來可能會不同 更改字體可能會破壞應(yīng)用程序的布局 如果決定改變布局,我們必須每個控件徹底的加以修改,這是繁瑣和耗時的

下面的例子就是控件的絕對坐標(biāo)定位方式。

#!/usr/bin/python3# -*- coding: utf-8 -*-"""PyQt5 教程這個例子顯示了在窗口中使用絕對定位的三個標(biāo)簽。作者:我的世界你曾經(jīng)來過博客:http://blog.csdn.net/weiaitaowang最后編輯:2016年7月31日"""import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QLabelclass Example(QWidget): def __init__(self):  super().__init__()  self.initUI() def initUI(self):  lbl1 = QLabel('我的世界你曾經(jīng)來過', self)  lbl1.move(15, 10)  lbl2 = QLabel('CSND博客', self)  lbl2.move(35, 40)  lbl3 = QLabel('程序員', self)  lbl3.move(55, 70)  self.setGeometry(300, 300, 250, 150)  self.setWindowTitle('絕對定位')    self.show()if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())

在我們的例子中使用的都是標(biāo)簽(Label)。我們通過提供x和y坐標(biāo)值定位它們。坐標(biāo)系的原點是控件的左上角。 x值增長是由左到右。 y值增長是從上到下。

lbl1 = QLabel('我的世界你曾經(jīng)來過', self)lbl1.move(15, 10)

標(biāo)簽控件被放置在 x=15 和 y=10。

程序執(zhí)行后

這里寫圖片描述

Box layout盒子布局

布局管理使用布局類的方式更加靈活、實用。它是將一個控件放在窗口中的首選方式。QHBoxLayout和QVBoxLayout分別是水平和垂直對齊控件的基本布局類。

試想一下,我們希望把兩個按鈕在程序的右下角。要創(chuàng)建這樣一個布局,我們可以使用一橫一縱兩個框。要創(chuàng)造必要的空余空間,我們將增加一個拉伸因子(stretch factor)。

#!/usr/bin/python3# -*- coding: utf-8 -*-"""PyQt5 教程在這個例子中,我們在窗口的右下角放置兩個按鈕。作者:我的世界你曾經(jīng)來過博客:http://blog.csdn.net/weiaitaowang最后編輯:2016年7月31日"""import sysfrom PyQt5.QtWidgets import (QApplication, QWidget,  QPushButton, QVBoxLayout, QHBoxLayout)class Example(QWidget): def __init__(self):  super().__init__()  self.initUI() def initUI(self):  okButton = QPushButton('確定')  cancelButton = QPushButton('取消')  hbox = QHBoxLayout()  hbox.addStretch(1)  hbox.addWidget(okButton)  hbox.addWidget(cancelButton)  vbox = QVBoxLayout()  vbox.addStretch(1)  vbox.addLayout(hbox)  self.setLayout(vbox)  self.setGeometry(300, 300, 350, 150)  self.setWindowTitle('Box布局')    self.show()if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 马公市| 潮州市| 灵台县| 农安县| 门头沟区| 体育| 靖远县| 青海省| 河北区| 杭州市| 开阳县| 六安市| 仙居县| 湘潭市| 开化县| 巴东县| 陇西县| 合阳县| 惠安县| 博客| 清徐县| 安义县| 婺源县| 宜兰市| 聂拉木县| 瑞昌市| 西乌珠穆沁旗| 名山县| 汉阴县| 建始县| 竹北市| 临湘市| 依兰县| 长兴县| 长子县| 长治市| 油尖旺区| 雅江县| 道孚县| 天等县| 罗源县|