网格布局其中的每一个按钮对应到一个网格,其实我们的窗口部件可以占据多个网格,我们可以据此做一个类似文本输入的窗口。下面我们就用源码来学习PyQt的文本框与网格布局。
先上源代码:
import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QTextEdit, QLineEdit
class exp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
title = QLabel(’Title’)
author = QLabel(’Author’)
review = QLabel(’Review’)
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)
grid.addWidget(reviewEdit, 3, 1, 5, 1)
self.setGeometry(300, 300, 400, 400)
self.setLayout(grid)
self.setWindowTitle(’review’)
self.show()
if __name__ == ’__main__’:
app = QApplication(sys.argv)
ex = exp()
sys.exit(app.exec_())
以上的代码创建了三个QLabel部件,两个QLineEdit部件和一个QTextEdit部件共六个部件,通过QGridLayout将这六个部件进行排列。
grid = QGridLayout()
grid.setSpacing(10)
以上代码创建了一个网格布局,setSpacing(10)设置了网格间的距离为10。
grid.addWidget(reviewEdit, 3, 1, 5, 1)
之前的5个部件都是占据一个网格,现在reviewEdit占据了(3,1),(4,1),(5,1)共3个网格。
原文来自:简书/链球选手