本文将介绍Grid Layout的使用方法,Grid Layout可以生成行列等分的窗体布局,特别有利于类似计算器项目的界面设计,本文将介绍Grid Layout的使用方法。
源程序:
import sys
from PyQt5.QtWidgets import QWidget, \
QPushButton, \
QToolTip, \
QMessageBox, \
QApplication, \
QDesktopWidget, \
QMainWindow, \
QAction, \
qApp, \
QGridLayout
from PyQt5.QtGui import QFont, \
QIcon
# QMainWindow是QWidget的派生类
class CMainWindow(QMainWindow):
def __init__(self):
super().__init__()
# ToolTip设置
QToolTip.setFont(QFont('华文楷体', 10))
# statusBar设置
self.statusBar().showMessage('准备就绪')
# 退出Action设置
exitAction = QAction(QIcon('1.png'), '&Exit', self)
exitAction.setShortcut('ctrl+Q')
exitAction.setStatusTip('退出应用程序')
exitAction.triggered.connect(qApp.quit) # qApp就相当于QCoreApplication.instance()
# menuBar设置
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
# toolBar设置
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
# GridLayout布局
grid = QGridLayout()
widget = QWidget()
self.setCentralWidget(widget) # 建立的widget在窗体的中间位置
widget.setLayout(grid)
names = ['cls', 'Bck', '', '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 name == '':
continue
button = QPushButton(name)
grid.addWidget(button, *position)
self.resize(500, 300)
self.center()
self.setFont(QFont('华文楷体', 10))
self.setWindowTitle('PyQt5应用教程(snmplink编著)')
self.setWindowIcon(QIcon('10.png'))
self.show()
def center(self):
# 得到主窗体的框架信息
qr = self.frameGeometry()
# 得到桌面的中心
cp = QDesktopWidget().availableGeometry().center()
# 框架的中心与桌面中心对齐
qr.moveCenter(cp)
# 自身窗体的左上角与框架的左上角对齐
self.move(qr.topLeft())
def closeEvent(self, QCloseEvent):
reply = QMessageBox.question(self,
'PyQt5应用教程(snmplink编著)',
"是否要退出应用程序?",
QMessageBox.Yes | QMessageBox.No,
QMessageBox.No)
if reply == QMessageBox.Yes:
QCloseEvent.accept()
else:
QCloseEvent.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = CMainWindow()
sys.exit(app.exec_())
1、第11行:输入GridLayout模块。
2、第44行:声明QGridLayout对象Grid。
3、第49-53行:声明names序列,用于表示PushButton名。
4、第55行:声明position序列,用于表示PushButton在Grid Layout中的索引。
5、第57-61行:从names和position两个序列中,按顺序取出其中的元素,生成PushButton,最后将其加入到grid中。
程序的运行效果:
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
CSDN:http://blog.csdn.net/qingwufeiyang12346