python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5布局控件QGridLayout詳細(xì)使用方法與實(shí)例
PyQt5布局控件QGridLayout簡(jiǎn)介
QGridLayout(網(wǎng)格布局)是將窗口分割成行和列的網(wǎng)格來(lái)進(jìn)行排列,通常可以使用函數(shù)addWidget()將被管理的控件(Widget)添加到窗口中,或者使用addLayout()函數(shù)將布局(layout)添加到窗口中,也可以通過(guò)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開(kāi)始 | |
| column:控件的列數(shù),默認(rèn)從0開(kāi)始 | |
| 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)建按鈕并通過(guò)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)建按鈕并通過(guò)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)鏈接
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5窗口布局控件QStackedWidget詳細(xì)使用方法
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5動(dòng)態(tài)(可拖動(dòng)控件大小)布局控件QSplitter詳細(xì)使用方法與實(shí)例
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5布局控件QVBoxLayout詳細(xì)使用方法與實(shí)例
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5表單布局控件QFormLayout詳細(xì)使用方法與實(shí)例
- Pyqt5自適應(yīng)布局實(shí)例
- Python深度學(xué)習(xí)實(shí)戰(zhàn)PyQt5布局管理項(xiàng)目示例詳解
- PyQt5的相對(duì)布局管理的實(shí)現(xiàn)
- Pyqt5中5種布局的實(shí)現(xiàn)示例
相關(guān)文章
Python3中map(),reduce(),filter()的詳細(xì)用法
這篇文章主要介紹了Python3中map(),reduce(),filter()的詳細(xì)用法,Python3中的map()、reduce()、filter()?這3個(gè)一般是用于對(duì)序列進(jìn)行操作的內(nèi)置函數(shù),它們經(jīng)常需要與?匿名函數(shù)?lambda?聯(lián)合起來(lái)使用2022-08-08
python中的np.argmax() 返回最大值索引號(hào)
這篇文章主要介紹了python中的np.argmax() 返回最大值索引號(hào)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
深入掌握Python模塊創(chuàng)建導(dǎo)入和使用
這篇文章主要為大家介紹了深入掌握Python模塊創(chuàng)建導(dǎo)入和使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
Python靜態(tài)類型檢查新工具之pyright 使用指南
這篇文章主要介紹了Python靜態(tài)類型檢查新工具之pyright 使用指南,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
全網(wǎng)首秀之Pycharm十大實(shí)用技巧(推薦)
PyCharm 應(yīng)該是大多數(shù) python 開(kāi)發(fā)者的首選 IDE,每天我們都在上面敲著熟悉的代碼,寫(xiě)出一個(gè)又一個(gè)奇妙的功能。這篇文章主要介紹了Pycharm十大實(shí)用技巧,需要的朋友可以參考下2020-04-04

