• 售前

  • 售后

热门帖子
入门百科

PyQt QMainWindow的使用示例

[复制链接]
您脱风云错 显示全部楼层 发表于 2021-10-26 12:52:01 |阅读模式 打印 上一主题 下一主题
目次


  • PyQt5 手写 QMainWindow 示例
  • 使用designer画出来的界面
  • PyQt4手写窗口代码
QMainWindow继承自QWidget
QMainWindow相当于程序的主界面,内置了menu和toolBar。
使用 Qt Designer 可以很方便地添加menu选项。
对于较大型的界面,用Qt Designer比较方便。.ui文件就像Android中使用xml一样。
画出的ui文件可以用PyQt中的PyUIC转换成py文件。转换后的py文件中有一个class。
新建一个继承自QMainWindow的类,来调用天生的这个类。
主窗口关闭时,会调用closeEvent(self, *args, **kwargs),可复写这个方法,加上一些关闭时的使用。
比如停止子线程,关闭数据库接口,开释资源等等使用。

PyQt5 手写 QMainWindow 示例


Win7  PyCharm  Python3.5.1  PyQt5
手写一个main window,重要使用了菜单栏、文本编辑框、工具栏和状态栏
  1. |-- main.py
  2. |-- res
  3. | `-- sword.png
  4. `-- ui
  5. `-- app_main_window.py
复制代码
main.py主文件
  1. import sys
  2. from PyQt5.QtWidgets import QApplication
  3. from ui.app_main_window import AppMainWindow
  4. if __name__ == '__main__':
  5. app = QApplication(sys.argv)
  6. window = AppMainWindow()
  7. window.show()
  8. sys.exit(app.exec_())
复制代码
app_main_window.py窗口实现文件
  1. from PyQt5.QtCore import QCoreApplication
  2. from PyQt5.QtGui import QIcon
  3. from PyQt5.QtWidgets import QAction
  4. from PyQt5.QtWidgets import QMainWindow
  5. from PyQt5.QtWidgets import QTextEdit
  6. class AppMainWindow(QMainWindow):
  7. """
  8. 菜单栏、文本编辑框、工具栏和状态栏
  9. """
  10. def __init__(self):
  11.   super().__init__()
  12.   self.init_ui()
  13. def init_ui(self):
  14.   # 菜单栏
  15.   self.statusBar().showMessage('Main window is ready')
  16.   self.setGeometry(500, 500, 450, 220)
  17.   self.setMinimumSize(150, 120)
  18.   self.setWindowTitle('MainWindow')
  19.   # 文本编辑框
  20.   text_edit = QTextEdit()
  21.   self.setCentralWidget(text_edit) # 填充剩下的位置
  22.   # 定义退出动作
  23.   exit_action = QAction(QIcon('res/sword.png'), 'Exit', self)
  24.   exit_action.setShortcut('Ctrl+Q')
  25.   exit_action.setStatusTip('Exit App') # 鼠标指向选项时在窗口状态栏出现的提示
  26.   # exit_action.triggered.connect(QCoreApplication.instance().quit)
  27.   exit_action.triggered.connect(self.close) # 关闭app
  28.   # 定义菜单栏,添加一个选项
  29.   menu_bar = self.menuBar()
  30.   file_menu = menu_bar.addMenu('&File')
  31.   file_menu.addAction(exit_action)
  32.   # 定义工具栏,添加一个退出动作
  33.   toolbar = self.addToolBar('&Exit')
  34.   toolbar.addAction(exit_action)
复制代码
有的时间PyCharm给的代码提示不完全。网上说PyCharm配合vim插件来使用能带来很好的体验。
天生的界面中,工具栏可以自由的拖动,可以放在上下左右4个地方。
同样的代码,可以很方便地移植到PyQt4中。

使用designer画出来的界面


Ubuntu
使用designer绘制好界面后,讲ui文件转换成py代码。
  1. import sys
  2. from PyQt5.QtWidgets import QMainWindow, QApplication
  3. from ui_main_window import Ui_UAppMainWindow
  4. class RustMainWindow(QMainWindow):
  5. """主界面类"""
  6. def __init__(self):
  7.   super(RustMainWindow, self).__init__()
  8.   self.ma = Ui_UAppMainWindow() # designer画的界面
  9.   self.ma.setupUi(self)
  10. if __name__ == "__main__":
  11. app = QApplication(sys.argv)
  12. main_window = RustMainWindow()
  13. main_window.show()
  14. sys.exit(app.exec_())
复制代码
复写__init__初始化方法时须要调用父类方法

PyQt4手写窗口代码


和上面那个功能类似。
  1. import sys
  2. from PyQt4.QtGui import QMainWindow, QTextEdit, QAction, QIcon, QApplication
  3. class AppMainWindow(QMainWindow):
  4. def __init__(self):
  5.   super(AppMainWindow, self).__init__()
  6.   self.init_ui()
  7. def init_ui(self):
  8.   self.statusBar().showMessage('Main window is ready')
  9.   self.setGeometry(500, 500, 450, 220)
  10.   self.setMinimumSize(150, 120)
  11.   self.setWindowTitle('MainWindow')
  12.   text_edit = QTextEdit()
  13.   self.setCentralWidget(text_edit)
  14.   exit_action = QAction(QIcon('res/ic_s1.png'), 'Exit', self)
  15.   exit_action.setShortcut('Ctrl+Q')
  16.   exit_action.setStatusTip('Exit App')
  17.   exit_action.triggered.connect(self.close)
  18.   menu_bar = self.menuBar()
  19.   file_menu = menu_bar.addMenu('&File')
  20.   file_menu.addAction(exit_action)
  21.   toolbar = self.addToolBar('&Exit')
  22.   toolbar.addAction(exit_action)
  23. if __name__ == '__main__':
  24. app = QApplication(sys.argv)
  25. window = AppMainWindow()
  26. window.show()
  27. sys.exit(app.exec_())
复制代码
可以看出,PyQt4 和 5 的代码根本上是通用的。复写__init__的方法不同。
以上就是PyQt QMainWindow的使用示例的详细内容,更多关于PyQt QMainWindow的使用的资料请关注脚本之家别的相干文章!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作