欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PyQt QMainWindow的使用示例

程序员文章站 2022-07-06 13:18:24
qmainwindow继承自qwidgetqmainwindow相当于程序的主界面,内置了menu和toolbar。使用 qt designer 可以很方便地添加menu选项。对于较大型的界面,用qt...

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的使用的资料请关注其它相关文章!