PyQt5学习--基本窗口控件--QMainWindow

Posted qwangxiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt5学习--基本窗口控件--QMainWindow相关的知识,希望对你有一定的参考价值。

QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件。比如将工具栏、菜单栏和状态栏等添加到布局管理器中。


窗口类型介绍

QMainWindow、QWidget和QDialog三个类都是用来创建窗口的。 
QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式。 
QWidget是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的,也可以是非模态的。 
如果是主窗口,就使用QMainWindow类;如果是对话框,就使用QDialog类;如果不确定,或者有可能作为顶层窗口,也有可能嵌入到其他窗口中,就使用QWidget类。


创建主窗口

QMainWindow类中比较重要的方法如下表所示:

方法描述
addToolBar() 添加工具栏
centralWidget() 返回窗口中心的一个控件,未设置时返回NULL
menuBar() 返回主窗口的菜单栏
setCentralWidget() 设置窗口中心的控件
setsStatusBar() 设置状态栏
statusBar() 获得状态栏对象后,调用状态栏对象的showMessage(message,int timeout=0)方法,显示状态栏信息

直接上书上的代码

代码示例

创建主窗口

# -*- coding: utf-8 -*- 

‘‘‘
    【简介】
    PyQT5中主窗口例子
‘‘‘

import sys
from PyQt5.QtWidgets import QMainWindow , QApplication
from PyQt5.QtGui import QIcon 

class MainWidget(QMainWindow):
    def __init__(self,parent=None):
        super(MainWidget,self).__init__(parent)
        # 设置主窗体标签
        self.setWindowTitle("QMainWindow 例子")         
        self.resize(400, 200) 
        self.status = self.statusBar(www.boshenyl.cn )
        self.status.showMessage("这是状态栏提示",5000)


if __name__ == "__main__": 
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon("www.yszx11.cn/ /images/cartoon1.ico"))
    main = MainWidget(www.mhylpt.com/)
    main.show()
    sys.exit(app.exec_())

移动和关闭主窗口

#coding=‘utf-8‘
#将窗口移动到屏幕中间和关闭主窗口的例子

import sys
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QHBoxLayout,QPushButton,QApplication,QWidget

class WinForm(QMainWindow):
    def __init__(self,parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle(‘窗口放在中间和关闭主窗口的例子‘)
        self.resize(370,250)
        self.center(www.wanmeiyuele.cn )

        self.button1 = QPushButton(‘关闭主窗口‘)
        #将按钮的clicked信号与onButtonClick槽函数关联起来
        self.button1.clicked.connect(self.onButtonClick)

        layout = QHBoxLayout()
        layout.addWidget(self.button1)

        main_frame = QWidget()
        main_frame.setLayout(layout)
        self.setCentralWidget(main_frame)

    def center(self):
        #获得屏幕的大小
        screen = QDesktopWidget().screenGeometry()
        #获得QWidget窗口的大小
        size = self.geometry(www.caibaoyule.cn )
        #将窗口移动到屏幕中间
        self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)

    def onButtonClick(self):
        # sender是发送信号的对象
        sender = self.sender()
        print(sender.text(www.jyz521.com/)+‘被按下了‘)
        qApp = QApplication.instance()
        qApp.quit(www.365soke.cn)

if __name__ == ‘__main__‘:
    app = QApplication(sys.argv)
    form = WinForm()
    form.show()
    sys.exit(app.exec_())

以上是关于PyQt5学习--基本窗口控件--QMainWindow的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5窗口设计基础之常用控件类(三)

PyQt5 中当窗口大小改变时,如何去调整控件的位置以适应窗口大小改变的思考

PyQt5 控件学习(一个一个学习之QToolButton)

PyQt5 控件学习(一个一个学习之QDialog)

《PyQT5软件开发》第2章 PyQt5基本功能

《PyQT5软件开发 - 基础篇》第2章 PyQt5基本功能