python GUI庫圖形界面開發(fā)之PyQt5布局控件QGridLayout詳細(xì)使用方法與實(shí)例
PyQt5布局控件QGridLayout簡(jiǎn)介
QGridLayout(網(wǎng)格布局)是將窗口分割成行和列的網(wǎng)格來進(jìn)行排列,通??梢允褂煤瘮?shù)addWidget()將被管理的控件(Widget)添加到窗口中,或者使用addLayout()函數(shù)將布局(layout)添加到窗口中,也可以通過addWIdget()函數(shù)對(duì)所添加的控件設(shè)置行數(shù)與列數(shù)的跨越,最后實(shí)現(xiàn)網(wǎng)格占據(jù)多個(gè)窗格
QGridLayout類中常用的方法
方法 | 描述 |
---|---|
addWidget(QWidget Widget,int row,int col,int alignment=0) | 給網(wǎng)格布局添加部件,設(shè)置指定的行和列,起始位置的默認(rèn)值為(0,0) |
widget:所添加的控件 | |
row:控件的行數(shù),默認(rèn)從0開始 | |
column:控件的列數(shù),默認(rèn)從0開始 | |
alignment:對(duì)齊方式 | |
addWidget(QWidget widget,int fromRow,int fromColulmn,int rowSpan,int columnSpan,Qt.Alignment alignment=0) | 所添加的的控件跨越很多行或者列的時(shí)候,使用這個(gè)函數(shù) |
widget:所添加的控件 | |
fromRow:控件的起始行數(shù) | |
fronColumn:控件的起始列數(shù) | |
rowSpan:控件跨越的行數(shù) | |
column:控件跨越的列數(shù) | |
alignment:對(duì)齊方式 | |
setSpacing(int spacing) | 設(shè)置軟件在水平和垂直方向的間隔 |
QGridLayout單一的網(wǎng)格單元格實(shí)例
import sys from PyQt5.QtWidgets import QApplication ,QWidget , QGridLayout, QPushButton class Winform(QWidget): def __init__(self,parent=None): super(Winform,self).__init__(parent) self.initUI() def initUI(self): #1創(chuàng)建QGridLayout的實(shí)例,并設(shè)置窗口的布局 grid = QGridLayout() self.setLayout(grid) #2創(chuàng)建按鈕的標(biāo)簽列表 names = ['Cls', 'Back', '', 'Close', '7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=', '+'] #3 在網(wǎng)格中創(chuàng)建一個(gè)位置列表 positions = [(i,j) for i in range(5) for j in range(4)] #4 創(chuàng)建按鈕并通過addWIdget()方法添加到布局中 for position, name in zip(positions, names): if name == '': continue button = QPushButton(name) grid.addWidget(button, *position) self.move(300, 150) self.setWindowTitle('網(wǎng)格布局管理例子') if __name__ == "__main__": app = QApplication(sys.argv) form = Winform() form.show() sys.exit(app.exec_())
運(yùn)行效果圖如下
第一組代碼:創(chuàng)建QGridLayout的實(shí)例,并設(shè)置窗口的布局
第二組代碼:創(chuàng)建按鈕的標(biāo)簽列表
第三組代碼:在網(wǎng)格中創(chuàng)建一個(gè)位置列表
第四組代碼:創(chuàng)建按鈕并通過addWIdget()方法添加到布局中
QGridLayout跨越行和列的網(wǎng)格單元格實(shí)例
import sys from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit, QTextEdit, QGridLayout, QApplication) class Winform(QWidget): def __init__(self,parent=None): super(Winform,self).__init__(parent) self.initUI() def initUI(self): titleLabel = QLabel('標(biāo)題') authorLabel = QLabel('提交人') contentLabel = QLabel('申告內(nèi)容') titleEdit = QLineEdit() authorEdit = QLineEdit() contentEdit = QTextEdit() grid = QGridLayout() grid.setSpacing(10) grid.addWidget(titleLabel, 1, 0) grid.addWidget(titleEdit, 1, 1) grid.addWidget(authorLabel, 2, 0) grid.addWidget(authorEdit, 2, 1) grid.addWidget(contentLabel, 3, 0) grid.addWidget(contentEdit, 3, 1, 5, 1) self.setLayout(grid) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('故障申告') if __name__ == "__main__": app = QApplication(sys.argv) form = Winform() form.show() sys.exit(app.exec_())
運(yùn)行效果示意圖如下
代碼分析
把titleLabel放在QGridLayout布局的第一行第0列
grid.addWidget(titleLabel, 1, 0)
把titleEditl放在QGridLayout布局的第一行第1列
grid.addWidget(titleEdit, 1, 1)
把contentLabel放在QGridLayout布局的第3行第0列
grid.addWidget(contentLabel, 3, 0)
把contentEdit放在QGridLayout布局的第3行第1列,跨越5行1列
grid.addWidget(contentEdit, 3, 1, 5, 1)
本文主要介紹了PyQt5布局控件QGridLayout詳細(xì)使用方法與實(shí)例,更多關(guān)于PyQt5布局控件知識(shí)請(qǐng)查看下面的相關(guān)鏈接
相關(guān)文章
Python讀取Excel一列并計(jì)算所有對(duì)象出現(xiàn)次數(shù)的方法
這篇文章主要給大家介紹了關(guān)于Python讀取Excel一列并計(jì)算所有對(duì)象出現(xiàn)次數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09python爬蟲之場(chǎng)內(nèi)ETF基金獲取
這篇文章主要介紹了python爬蟲之場(chǎng)內(nèi)ETF基金獲取,ETF?是一種場(chǎng)內(nèi)交易型基金,可以在盤中進(jìn)行交易,交易性比場(chǎng)外基金強(qiáng)一點(diǎn),下文基于python的相關(guān)資料展開,需要的小伙伴可以參考一下2022-05-05Python輕松寫個(gè)課堂隨機(jī)點(diǎn)名系統(tǒng)
現(xiàn)在的學(xué)生大部分都很積極,會(huì)主動(dòng)舉手回答問題。但是,也會(huì)遇到一些不好的情況,比如年級(jí)越高主動(dòng)舉手的人越少,所以本文寫了一個(gè)隨機(jī)的學(xué)生點(diǎn)名系統(tǒng)可以幫老師解決這些問題2023-01-01Python使用Scrapy保存控制臺(tái)信息到文本解析
這篇文章主要介紹了Python使用Scrapy保存控制臺(tái)信息到文本解析,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12Python 實(shí)現(xiàn)Image和Ndarray互相轉(zhuǎn)換
今天小編就為大家分享一篇Python 實(shí)現(xiàn)Image和Ndarray互相轉(zhuǎn)換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02Python常用的內(nèi)置序列結(jié)構(gòu)(列表、元組、字典)學(xué)習(xí)筆記
序列指元素排成一列的數(shù)據(jù)結(jié)構(gòu),Python中有l(wèi)ist列表而沒有默認(rèn)內(nèi)置array數(shù)組,以下我們來整理一下Python常用的內(nèi)置序列結(jié)構(gòu)(列表、元組、字典)學(xué)習(xí)筆記2016-07-07