PyQt5学习教程8:使用Box Layout布局控件
来源:互联网 发布:福建网络电视台电话 编辑:程序博客网 时间:2024/05/18 01:58
本文将介绍Box Layout的使用方法,我们将在上一个例程的基础上,再增加2个push button,并将这3个push button始终维持在窗体的右下角,无论这个窗体如何变化。我们先来看一下程序。
源程序:
import sysfrom PyQt5.QtWidgets import QWidget, \ QPushButton, \ QToolTip, \ QMessageBox, \ QApplication, \ QDesktopWidget, \ QMainWindow, \ QAction, \ qApp, \ QHBoxLayout, \ QVBoxLayoutfrom PyQt5.QtCore import QCoreApplicationfrom 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) # 确认PushButton设置 btnOK = QPushButton("OK") btnOK.setToolTip("点击此按钮将确认改变!") btnOK.setStatusTip("点击此按钮将确认改变!") btnOK.resize(btnOK.sizeHint()) # 取消PushButton设置 btnCancel = QPushButton("Cancel") btnCancel.setToolTip("点击此按钮将放弃改变!") btnCancel.setStatusTip("点击此按钮将放弃改变!") btnCancel.resize(btnCancel.sizeHint()) # 退出PushButton设置 btnQuit = QPushButton('退出') btnQuit.setToolTip("点击此按钮将退出应用程序!") btnQuit.setStatusTip("点击此按钮将退出应用程序!") btnQuit.clicked.connect(QCoreApplication.instance().quit) btnQuit.resize(btnQuit.sizeHint()) # 建立widget用于容纳这些控件,并进行布局 widget = QWidget() self.setCentralWidget(widget) # 建立的widget在窗体的中间位置 hBox = QHBoxLayout() hBox.addStretch(1) hBox.addWidget(btnOK) hBox.addWidget(btnCancel) hBox.addWidget(btnQuit) vBox = QVBoxLayout() vBox.addStretch(1) vBox.addLayout(hBox) widget.setLayout(vBox) 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行:输入QHBoxLayout模块,用于水平布局控件。
2、第12行:输入QVBoxLayout模块,用于垂直布局控件。
3、第46-49行:增加“OK”按钮。
4、第52-55行:增加“Cancel”按钮。
5、第65行:声明Widget对象,由于CMainWindow是从QMainWindow派生而来,而QMainWindow已经具有Layout,所以不能使用SetLayout方法,为了解决此问题,声明widget对象,并使其居中窗体,然后将需要布局的控件放在widget中,重新布局。
6、第66行,将widget定位到窗体中间位置。
7、第68行,声明QHBoxLayout对象hBox。
8、第69行,设置伸缩空间,在控件之前设置伸缩空间,则控件居右显示。
9、第70-72行,加入控件。
10、第74行,声明QVBoxLayout对象vBox。
11、第75行:设置伸缩空间,在控件之前设置伸缩空间,则控件居下显示。
12、第76行,将对象hBox的Layout加入vBox。
13、第78行,设置Layout布局。
程序的运行效果:
原创性文章,转载请注明出处 http://user.qzone.qq.com/2756567163。
CSDN:http://blog.csdn.net/qingwufeiyang12346
阅读全文
1 0
- PyQt5学习教程8:使用Box Layout布局控件
- PyQt5学习教程9:使用Grid Layout布局计算器界面
- PyQt5:Box布局(12)
- PyQt5学习教程10:再议Grid Layout
- PyQt5教程-08-布局管理
- PyQt5系列教程(七)控件
- PyQt5教程-15-日历控件
- PyQt5教程-22-自定义控件
- PyQt5学习教程13:输入对话框的使用
- PyQt5学习教程14:颜色拾取对话框的使用
- PyQt5学习教程15:字体选择对话框的使用
- PyQt5学习教程16:文件打开对话框的使用
- QT的学习之路 1布局控件(Layout)
- PyQt5教程(三)——布局管理
- 使用box-sizing布局
- wxFormbuileder中wxwidgets的布局控件(layout)的使用
- Extjs学习 layout布局
- Android学习-Layout布局
- 每日产品辣评:谷歌连发五款新品,却还是被苹果抢了头条
- 颠覆式创新 新世纪机器人推出智能平衡车igo
- 设计模式---简单工厂
- session和cookie的联系和区别
- JavaWeb入门必须懂
- PyQt5学习教程8:使用Box Layout布局控件
- 从核外电子(electron)到应用软件(software)------谈谈抽象和认知
- 451. Sort Characters By Frequency (sort)
- MyBatis 基于Mapper的增删改查示例(Spring IOC注入)
- Codeforces Round #441 (Div.2)
- 线性表之基于数组的实现
- PAT乙级1014. 福尔摩斯的约会(20)
- 深夜随想,如何突破瓶颈
- C#操作字符串方法总结<转>