您的位置:首页 > 编程语言 > Qt开发

PyQt5学习教程9:使用Grid Layout布局计算器界面

2017-10-29 00:52 429 查看
    本文将介绍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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python PyQt5 应用教程