PyQt5——QGridLayout和QFormLayout
程序员文章站
2022-07-13 22:31:07
...
QGridLayout
QGridLayout(网格布局)是将窗口分割成行和列的网络来进行排列,通常可以使用函数addWidget()将被管理的控件添加到窗口中。或者addLayout函数也可以。
单一的网格单元格
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):
grid = QGridLayout()
self.setLayout(grid)
names = ['Cls', 'Back', '','Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+']
positions = [(i,j) for i in range(5) for j in range(4)]
for position, name in zip(positions,names):
if names == '':
continue
button = QPushButton(name)
grid.addWidget(button, *position)
self.move(300,150)
self.setWindowTitle("网格布局管理例子")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Winform()
win.show()
sys.exit(app.exec_())
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hRaiLcci-1571811454697)(assets/1571795720673.png)]
跨越行和列的网格单元格
import sys
from PyQt5.QtWidgets import QWidget,QLabel,QLineEdit,QTextEdit,QGridLayout,QApplication
class Winform(QWidget):
def __init__(self):
super(Winform,self).__init__()
self.initUI()
def initUI(self):
title = QLabel("标题")
author = QLabel("提交人")
review = QLabel("申告内容")
titleEdit = QLineEdit()
authorEdit = QLineEdit()
reviewEdit = QTextEdit()
grid = QGridLayout()
grid.setSpacing(10)
grid.addWidget(title,1,0)
grid.addWidget(titleEdit,1,1)
grid.addWidget(author,2,0)
grid.addWidget(authorEdit,2,1)
grid.addWidget(review,3,0)
# 放置在第3行第1列,跨越5行和1列
grid.addWidget(reviewEdit,3,1,5,1)
self.setLayout(grid)
self.setGeometry(300,300,350,300)
self.setWindowTitle("故障申告")
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Winform()
win.show()
sys.exit(app.exec_())
QFormLayout(表单布局)
QFormLayout是label-field式的表单布局,就是实现表单方式的布局。表单是提示用户进行交互的一种模式,主要由两列组成,第一列用于显示信息,第二类需要用户进行选择或输入。
import sys
from PyQt5.QtWidgets import QApplication,QWidget,QFormLayout,QLabel,QLineEdit
class Winform(QWidget):
def __init__(self):
super(Winform,self).__init__()
self.setWindowTitle("表单布局管理例子")
self.resize(400,100)
fromlayout= QFormLayout()
labl1 = QLabel("标签1")
lineEdit1 = QLineEdit()
labl2 = QLabel("标签2")
lineEdit2 = QLineEdit()
labl3 = QLabel("标签3")
lineEdit3 = QLineEdit()
fromlayout.addRow(labl1,lineEdit1)
fromlayout.addRow(labl2,lineEdit2)
fromlayout.addRow(labl3,lineEdit3)
self.setLayout(fromlayout)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Winform()
win.show()
sys.exit(app.exec_())
推荐阅读
-
在python3中pyqt5和mayavi不兼容问题的解决方法
-
QT下载和配置pyqt5(超详细)(qt+python+vs2017)
-
pyqt5 comboBox获得下标、文本和事件选中函数的方法
-
用 PYQT5 和 QT Dseingner 写的串口助手
-
荐 pyqt5 tableWidget入门,和treewidget联动功能
-
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
-
对pyqt5之menu和action的使用详解
-
对PyQt5中的菜单栏和工具栏实例详解
-
Python环境下PyQt5的安装以及QT Desinger和PyUIC在Pycharm中的配置
-
在python3中pyqt5和mayavi不兼容问题的解决方法