简介
最常用的还是栅格布局了。这种布局是把窗口分为行和列。创建和使用栅格布局,需要使用QGridLayout模块。
关键代码
# 1. QGridLayout实例,并把它放到程序窗口里
grid = QGridLayout()
self.setLayout(grid)
# 2. 这是我们将要使用的按钮的名称。
names = ['Cls', 'Bck', '', 'Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+']
# 3. 创建按钮位置列表。
positions = [(i, j) for i in range(5)for j in range(4)]
# 4. 创建按钮,并使用addWidget()方法把按钮放到布局里面。
for position, name in zip(positions, names):
if name == '':
continue
button = QPushButton(name)
grid.addWidget(button, *position)
完整代码
import sys
from PyQt5.QtWidgets import QApplication, QPushButton, QGridLayout, QWidget, QDesktopWidget
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
# 1. QGridLayout实例,并把它放到程序窗口里
grid = QGridLayout()
self.setLayout(grid)
# 2. 这是我们将要使用的按钮的名称。
names = ['Cls', 'Bck', '', 'Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+']
# 3. 创建按钮位置列表。
positions = [(i, j) for i in range(5)for j in range(4)]
# 4. 创建按钮,并使用addWidget()方法把按钮放到布局里面。
for position, name in zip(positions, names):
if name == '':
continue
button = QPushButton(name)
grid.addWidget(button, *position)
self.resize(650, 450)
self.move(450, 300)
self.center()
self.show()
def center(self):
qr = self.frameGeometry() # 拿到程序的主框架
qp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(qp)
self.move(qr.topLeft())
# 程序主入口定义好
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())