天天看点

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

PyQt5学习之路,点击有pyqt5学习笔记

在PyQt5中,提供了三种窗口类型,

QMainWindow

QWidget

QDialog

,三个类都是用来创建窗口的,可以直接使用,也可以继承后再使用
  • QMainWindow

    :包含菜单栏,工具栏,状态栏和标题栏。是最常见的窗口形式,通常被用作为主窗口(不能设置布局,使用setLayout()方法,因为它有自己的布局);
    PyQt5基本窗口控件-----QMainWindow
  • QDialog

    :是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,有模态与非模态。这个窗口没有菜单栏,工具栏等
    PyQt5基本窗口控件-----QMainWindow
  • QWidget

    不清楚窗口用途时,使用QWidget类

QMainWindow继承自QWidget类,拥有它的派生方法和属性

方法 描述
addToolBar() 添加工具栏
centralWidget() 返回窗口中心的一个控件,未设置时返回NULL
menuBar() 返回主窗口的菜单栏
setCentralWidget 设置窗口中心的控件
seStatusBar 设置状态栏
statusBar 获得状态栏对象后,调用状态栏对象的showMessage(message, int timeout = 0)方法,显示状态栏信息,其中第一个参数是要显示的状态栏信息,第二参数是信息停留时间,单位毫秒,默认为0,表示一直显示

在PyQt中,主窗口(QMainWindow)中会有一个控件(QWidget)占位符来占着中心窗口,可以使用setCentralWidget()来设置中心窗口。

PyQt5基本窗口控件-----QMainWindow
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton
from PyQt5.QtGui import QIcon

class QMainWin(QMainWindow):
    def __init__(self, parent=None):
        super(QMainWin, self).__init__(parent)

        # 设置主窗口的标题
        self.setWindowTitle("主窗口应用")

        # 设置窗口的尺寸
        self.resize(400, 300)

        # 设置状态栏
        self.status = self.statusBar()
        self.status.showMessage('这是状态栏,消息只存在五秒', 5000)

        # 设置按钮
        self.button1 = QPushButton('关闭主窗口')
        # 将信号与槽关联
        self.button1.clicked.connect(self.onButtonClick)

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

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

    # 主窗口居中显示
    def center(self):
        # 获取屏幕坐标
        screen = QDesktopWidget().screenGeometry()
        # 获取窗口坐标
        size = self.geometry()
        newLeft = (screen.width() - size.width())/2
        newTop = (screen.height() - size.height())/2
        self.move(newLeft, newTop)

    # 按钮单击事件的方法(自定义的槽)
    def onButtonClick(self):
        # sender是发送信号的对象
        sander = self.sender()
        print(sander.text() + '按钮被按下')
        app = QApplication.instance()
        # 退出应用程序
        app.quit()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('about_us_bk.jpg'))
    main = QMainWin()
    main.show()
    sys.exit(app.exec_())
           
PyQt5基本窗口控件-----QMainWindow

继续阅读