QMainWindow简介
在桌面应用中,一个应用软件通常都会包含一个主窗口,主窗口是承载所有控件的窗体, 在PyQt5中常用的主窗体有两种QMainWindow和QDialog,他们也都继承自QWidget,所以这三个类都可以用来创建主窗口,可以直接使用,也可以继承后再使用。
如果一个窗口包含一个或者多个窗口,这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口,QMainWindow就是顶层窗口,它可以包含很多界面元素。QMainWindow窗口可以包含菜单栏,工具栏,状态栏,标题栏等,所以是我们最常用的窗口形式。
在PyQt中,在它的中间会有一个QWidget占着中心的位置,我们可以使用setCentralWidget来设置中心窗口。下图展示了一个QMainWindow的基本样式:
QMainWindow窗口基本样式示意图
QMainWindow中比较重要的方法有:
addToolBar(): 添加工具栏;centralWidget(): 返回窗口的中心控件,未设置时返回空;setCentralWidget():设置窗口的中心控件;menuBar(): 返回主窗口的菜单栏对象;setStatusBar(): 设置状态栏;statusBar(): 获得状态栏对象;
QMainWindow类继承关系:
测试QMainWindow
创建文件qmmainwindow.py, 演示状态栏信息显示和添加菜单栏,实现退出程序的功能,其代码如下:
import sysfrom PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QActionclass DemoMainWindow(QMainWindow): def __init__(self, parent=None): super(DemoMainWindow, self).__init__(parent) # 设置窗口标题 self.setWindowTitle('实战PyQt5: QMainWindow Demo!') # 设置窗口大小 self.resize(400, 260)#菜单栏 #添加一个退出程序的功能 action_exit = QAction('Exit', self) action_exit.triggered.connect(self.close) menu_file = QMenu('File', self) menu_file.addAction(action_exit) menu_bar = self.menuBar() menu_bar.addMenu(menu_file)#状态栏 status_bar = self.statusBar() status_bar.showMessage('这里是主窗口的状态栏部分', 5000) if __name__ == '__main__': app = QApplication(sys.argv) window = DemoMainWindow() window.show() sys.exit(app.exec())
运行结果如下图所示:
测试QMainWindow
本文知识点
QMainWindow是一个PyQt应用程序常用的主窗口;QMainWindow可支持菜单栏,工具条,状态栏等;实例化菜单栏对象,添加一个退出程序的操作;实例化状态栏对象,并在其上显示信息。喜欢本文内容就收藏,点赞,评论,关注和转发。