国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 康保县| 甘洛县| 洛川县| 类乌齐县| 廊坊市| 曲松县| 商都县| 稻城县| 拜城县| 中宁县| 华池县| 隆林| 金昌市| 铜梁县| 扶风县| 高唐县| 赤壁市| 香河县| 城口县| 金秀| 安塞县| 探索| 东台市| 汶上县| 洛宁县| 凉城县| 集安市| 鄂尔多斯市| 阿巴嘎旗| 连城县| 星座| 梁山县| 穆棱市| 顺义区| 阿勒泰市| 北碚区| 贺兰县| 永清县| 前郭尔| 孟连| 濮阳市|