QMainWindow

QMainWindow控件继承之QWidget控件,QWidget是所有控件的父类,主要提供界面的基本功能,包括边框、标题、工具栏、关闭按钮、最小化按钮以及最大化按钮等。子类中再进行差异化的设置,完成具体控件的效果。

QMainWindow控件里面包含:菜单栏、工具栏、状态栏以及中心子窗口。相关接口如下:

方法 描述
menuBar() 获取主窗口菜单栏
addMenu() 添加子菜单栏到父菜单栏
addAction() 添加菜单栏/工具栏中的具体选项
addToolBar() 添加工具栏,返回值是新增的工具栏对象
setCenterWidget() 添加中心子窗口
setStatusBar() 设置状态栏
statusBar() 获取状态栏对象
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QMenu, QStatusBar, QWidget, QLabel class MyWidget(QMainWindow):
def __init__(self):
super(MyWidget, self).__init__()
self.initMenuBar()
self.initToolBar()
self.initCenter()
self.initStatusBar() def initMenuBar(self):
self.open = QAction('Open(&O)', self)
self.close = QAction('Close(&C)', self)
self.ascii = QAction('Ascii(&A)', self)
self.utf = QAction('UTF(&U)', self)
self.utf8 = QAction('UTF8(&V)', self) self.menu = self.menuBar()
self.file = self.menu.addMenu('File(&F)')
self.file.addAction(self.open)
self.file.addAction(self.close) self.langurage = QMenu('Langurage(&L)', self)
self.langurage.addAction(self.ascii)
self.langurage.addAction(self.utf)
self.langurage.addAction(self.utf8)
self.menu.addMenu(self.langurage) def initToolBar(self):
self.fileToolBar = self.addToolBar('File')
self.fileToolBar.addAction(self.open)
self.fileToolBar.addAction(self.close) self.langurageToolBar = self.addToolBar('Langurage')
self.langurageToolBar.addAction(self.ascii)
self.langurageToolBar.addAction(self.utf)
self.langurageToolBar.addAction(self.utf8) def initStatusBar(self):
self.statusBar = QStatusBar()
self.setStatusBar(self.statusBar)
self.statusBar.showMessage('V1.0.0') def initCenter(self):
self.widget = QWidget(self)
self.setCentralWidget(self.widget)
label = QLabel(self.widget)
label.setText('center widget') if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.resize(500, 300)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
sys.exit(app.exec_())

小技巧

  • QAction中使用&可以设置快捷键,格式:WidgetName(&X)

  • 对于菜单栏中,要想选中/触发QAction,必须先触发QAction所在的QMenu,不能直接触发QAction

最新文章

  1. Java 8五大主要功能为开发者提供了哪些便利?
  2. C++中的static关键字的总结
  3. C#的winform编程入门简单介绍
  4. [网络] 用 OpenVPN 实现站对站 VPN 服务
  5. JQ实现accordion(可折叠)效果
  6. python矩阵运算 不断收集整理
  7. hadoop2.5.1搭建(二)
  8. PHP读取文件头(2字节)判断文件类型(转)
  9. android USB OTG功能实现
  10. js中字符串转换为日期型
  11. zzcms8.2#任意用户密码重置#del.php时间盲注#复现
  12. 简单docker镜像修改方式
  13. meta 刷新
  14. sed 正则 ! 取反
  15. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第5章编程练习7
  16. HTML条件注释
  17. 聊聊Java happens-before原则
  18. springboot发送邮件
  19. 搭建mysql cluster
  20. word2vec原理知识铺垫

热门文章

  1. react 使用的方法:
  2. Consul入门初识
  3. 3、尚硅谷_SSM高级整合_创建Maven项目.avi
  4. MySql索引要注意的8个事情
  5. 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套!
  6. Windows Defender might be impacting your build performance
  7. 如何判断一个String字符串不为空或这不为空字符串
  8. Glusterfs读写性能测试与分析
  9. 小白写了一堆if-else,大神实在看不下去了,竟然用策略模式直接摆平了
  10. ORA-04063: package body "DBSNMP.BSLN_INTERNAL" has errors