系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 脚本中心 > python > 详细页面

python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例

时间:2020-03-06来源:电脑系统城作者:电脑系统城

PyQt5布局控件QGridLayout简介

QGridLayout(网格布局)是将窗口分割成行和列的网格来进行排列,通常可以使用函数addWidget()将被管理的控件(Widget)添加到窗口中,或者使用addLayout()函数将布局(layout)添加到窗口中,也可以通过addWIdget()函数对所添加的控件设置行数与列数的跨越,最后实现网格占据多个窗格

QGridLayout类中常用的方法

方法 描述
addWidget(QWidget Widget,int row,int col,int alignment=0) 给网格布局添加部件,设置指定的行和列,起始位置的默认值为(0,0)
  widget:所添加的控件
  row:控件的行数,默认从0开始
  column:控件的列数,默认从0开始
  alignment:对齐方式
addWidget(QWidget widget,int fromRow,int fromColulmn,int rowSpan,int columnSpan,Qt.Alignment alignment=0) 所添加的的控件跨越很多行或者列的时候,使用这个函数
  widget:所添加的控件
  fromRow:控件的起始行数
  fronColumn:控件的起始列数
  rowSpan:控件跨越的行数
  column:控件跨越的列数
  alignment:对齐方式
setSpacing(int spacing) 设置软件在水平和垂直方向的间隔

QGridLayout单一的网格单元格实例


 
  1. import sys
  2. from PyQt5.QtWidgets import QApplication ,QWidget , QGridLayout, QPushButton
  3. class Winform(QWidget):
  4. def __init__(self,parent=None):
  5. super(Winform,self).__init__(parent)
  6. self.initUI()
  7. def initUI(self):
  8. #1创建QGridLayout的实例,并设置窗口的布局
  9. grid = QGridLayout()
  10. self.setLayout(grid)
  11. #2创建按钮的标签列表
  12. names = ['Cls', 'Back', '', 'Close',
  13. '7', '8', '9', '/',
  14. '4', '5', '6', '*',
  15. '1', '2', '3', '-',
  16. '0', '.', '=', '+']
  17. #3 在网格中创建一个位置列表
  18. positions = [(i,j) for i in range(5) for j in range(4)]
  19. #4 创建按钮并通过addWIdget()方法添加到布局中
  20. for position, name in zip(positions, names):
  21. if name == '':
  22. continue
  23. button = QPushButton(name)
  24. grid.addWidget(button, *position)
  25. self.move(300, 150)
  26. self.setWindowTitle('网格布局管理例子')
  27. if __name__ == "__main__":
  28. app = QApplication(sys.argv)
  29. form = Winform()
  30. form.show()
  31. sys.exit(app.exec_())

运行效果图如下

python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例

第一组代码:创建QGridLayout的实例,并设置窗口的布局

第二组代码:创建按钮的标签列表

第三组代码:在网格中创建一个位置列表

第四组代码:创建按钮并通过addWIdget()方法添加到布局中

QGridLayout跨越行和列的网格单元格实例


 
  1. import sys
  2. from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit, QTextEdit, QGridLayout,QApplication)
  3. class Winform(QWidget):
  4. def __init__(self,parent=None):
  5. super(Winform,self).__init__(parent)
  6. self.initUI()
  7. def initUI(self):
  8. titleLabel = QLabel('标题')
  9. authorLabel = QLabel('提交人')
  10. contentLabel = QLabel('申告内容')
  11. titleEdit = QLineEdit()
  12. authorEdit = QLineEdit()
  13. contentEdit = QTextEdit()
  14. grid = QGridLayout()
  15. grid.setSpacing(10)
  16. grid.addWidget(titleLabel, 1, 0)
  17. grid.addWidget(titleEdit, 1, 1)
  18. grid.addWidget(authorLabel, 2, 0)
  19. grid.addWidget(authorEdit, 2, 1)
  20. grid.addWidget(contentLabel, 3, 0)
  21. grid.addWidget(contentEdit, 3, 1, 5, 1)
  22. self.setLayout(grid)
  23. self.setGeometry(300, 300, 350, 300)
  24. self.setWindowTitle('故障申告')
  25. if __name__ == "__main__":
  26. app = QApplication(sys.argv)
  27. form = Winform()
  28. form.show()
  29. sys.exit(app.exec_())

运行效果示意图如下

python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例

代码分析

把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详细使用方法与实例,更多关于PyQt5布局控件知识请查看下面的相关链接

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载