PyQt QMainWindow的使用示例

 更新时间:2021年03月19日 15:31:28   作者:AnRFDev  
这篇文章主要介绍了PyQt QMainWindow的使用示例,帮助大家更好的理解和学习使用pyqt,感兴趣的朋友可以了解下

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,主要使用了菜单栏、文本编辑框、工具栏和状态栏

|-- main.py
|-- res
| `-- sword.png
`-- ui
 `-- app_main_window.py

main.py主文件

import sys

from PyQt5.QtWidgets import QApplication
from ui.app_main_window import AppMainWindow

if __name__ == '__main__':
 app = QApplication(sys.argv)
 window = AppMainWindow()
 window.show()
 sys.exit(app.exec_())

app_main_window.py窗口实现文件

from PyQt5.QtCore import QCoreApplication
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QAction
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QTextEdit


class AppMainWindow(QMainWindow):
 """
 菜单栏、文本编辑框、工具栏和状态栏
 """

 def __init__(self):
  super().__init__()
  self.init_ui()

 def init_ui(self):
  # 菜单栏
  self.statusBar().showMessage('Main window is ready')
  self.setGeometry(500, 500, 450, 220)
  self.setMinimumSize(150, 120)
  self.setWindowTitle('MainWindow')

  # 文本编辑框
  text_edit = QTextEdit()
  self.setCentralWidget(text_edit) # 填充剩下的位置

  # 定义退出动作
  exit_action = QAction(QIcon('res/sword.png'), 'Exit', self)
  exit_action.setShortcut('Ctrl+Q')
  exit_action.setStatusTip('Exit App') # 鼠标指向选项时在窗口状态栏出现的提示
  # exit_action.triggered.connect(QCoreApplication.instance().quit)
  exit_action.triggered.connect(self.close) # 关闭app

  # 定义菜单栏,添加一个选项
  menu_bar = self.menuBar()
  file_menu = menu_bar.addMenu('&File')
  file_menu.addAction(exit_action)

  # 定义工具栏,添加一个退出动作
  toolbar = self.addToolBar('&Exit')
  toolbar.addAction(exit_action)

有的时候PyCharm给的代码提示不完全。网上说PyCharm配合vim插件来使用能带来很好的体验。

生成的界面中,工具栏可以自由的拖动,可以放在上下左右4个地方。

同样的代码,可以很方便地移植到PyQt4中。

使用designer画出来的界面

Ubuntu

使用designer绘制好界面后,讲ui文件转换成py代码。

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from ui_main_window import Ui_UAppMainWindow


class RustMainWindow(QMainWindow):
 """主界面类"""

 def __init__(self):
  super(RustMainWindow, self).__init__()
  self.ma = Ui_UAppMainWindow() # designer画的界面
  self.ma.setupUi(self)


if __name__ == "__main__":
 app = QApplication(sys.argv)
 main_window = RustMainWindow()
 main_window.show()
 sys.exit(app.exec_())

复写__init__初始化方法时需要调用父类方法

PyQt4手写窗口代码

和上面那个功能类似。

import sys
from PyQt4.QtGui import QMainWindow, QTextEdit, QAction, QIcon, QApplication


class AppMainWindow(QMainWindow):
 def __init__(self):
  super(AppMainWindow, self).__init__()
  self.init_ui()

 def init_ui(self):
  self.statusBar().showMessage('Main window is ready')
  self.setGeometry(500, 500, 450, 220)
  self.setMinimumSize(150, 120)
  self.setWindowTitle('MainWindow')

  text_edit = QTextEdit()
  self.setCentralWidget(text_edit)

  exit_action = QAction(QIcon('res/ic_s1.png'), 'Exit', self)
  exit_action.setShortcut('Ctrl+Q')
  exit_action.setStatusTip('Exit App')
  exit_action.triggered.connect(self.close)

  menu_bar = self.menuBar()
  file_menu = menu_bar.addMenu('&File')
  file_menu.addAction(exit_action)

  toolbar = self.addToolBar('&Exit')
  toolbar.addAction(exit_action)


if __name__ == '__main__':
 app = QApplication(sys.argv)
 window = AppMainWindow()
 window.show()
 sys.exit(app.exec_())

可以看出,PyQt4 和 5 的代码基本上是通用的。复写__init__的方法不同。

以上就是PyQt QMainWindow的使用示例的详细内容,更多关于PyQt QMainWindow的使用的资料请关注脚本之家其它相关文章!

相关文章

  • python标准库os库的函数介绍

    python标准库os库的函数介绍

    这篇文章主要介绍了python标准库os库的函数介绍,需要的朋友可以参考下
    2020-02-02
  • python collections模块的使用

    python collections模块的使用

    这篇文章主要介绍了python collections模块的使用,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10
  • python如何在word中存储本地图片

    python如何在word中存储本地图片

    这篇文章主要介绍了python如何在word中存储本地图片,想了解docx模块的同学,可以参考下
    2021-04-04
  • Python实现的爬取百度文库功能示例

    Python实现的爬取百度文库功能示例

    这篇文章主要介绍了Python实现的爬取百度文库功能,结合实例形式分析了Python针对百度文库的爬取、编码转换、文件保存等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • Django配置文件代码说明

    Django配置文件代码说明

    在本篇文章里小编给大家整理了关于Django配置文件代码说明知识点,有需要的朋友们学习下。
    2019-12-12
  • 如何高效使用Python字典的方法详解

    如何高效使用Python字典的方法详解

    Dictionary 是 Python 的内置数据类型之一,它定义了键和值之间一对一的关系。下面这篇文章主要给大家介绍了关于如何高效使用Python字典的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • 利用一个简单的例子窥探CPython内核的运行机制

    利用一个简单的例子窥探CPython内核的运行机制

    这篇文章主要介绍了利用一个简单的例子窥探CPython内核的运行机制,作者通过一个简单的输出函数深入、介绍了CPython源码C代码中的一些函数,需要的朋友可以参考下
    2015-03-03
  • python树莓派红外反射传感器

    python树莓派红外反射传感器

    这篇文章主要为大家详细介绍了python树莓派红外反射传感器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • python3 pandas 读取MySQL数据和插入的实例

    python3 pandas 读取MySQL数据和插入的实例

    下面小编就为大家分享一篇python3 pandas 读取MySQL数据和插入的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Django celery实现异步任务操作,并在后台运行(守护进程)

    Django celery实现异步任务操作,并在后台运行(守护进程)

    这篇文章主要介绍了Django celery实现异步任务操作,并在后台运行(守护进程),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论