美文网首页Python测试开发
PyQt5学习笔记4 - QMainWindow

PyQt5学习笔记4 - QMainWindow

作者: 庄周幻梦 | 来源:发表于2021-04-26 09:42 被阅读0次

    前文

    PyQt5学习笔记1 - Windows下安装PyQt5
    PyQt5学习笔记2 - Designer和Pyuic5
    PyQt5学习笔记3 - 布局管理

    本文概述

    QMainWindow

    基本窗口控件

    窗口类型介绍

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

    QMainWindow 窗口可以包含菜单栏,工具栏,状态栏,标题栏等,是最常见的窗口形式, 也可以说是GUI程序的主窗口。

    QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的也可以是非模态的。QDialog没有菜单栏,工具栏,状态栏等。

    如果不确定是否作为顶层窗口或者是否会嵌入到其他窗口中,那么就使用Qwidget类。

    QMainWindow

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

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

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

    注意
    QMainWindow不能设置布局(使用setLayout())方法,因为它有自己的布局。

    实例:显示一个窗口并且居中电脑屏幕显示

    import sys
    from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget
    from PyQt5.QtGui import QIcon
    
    
    class MainWindows(QMainWindow):
        def __init__(self, parent=None):
            super(MainWindows, self).__init__(parent)
            self.resize(400, 200)
            self.statusBar().showMessage('Status Tips !!!', 5000)
            self.setWindowTitle("MainWindowsTitle")
            self.setWindowIcon(QIcon('../image/cartoon1.ico'))
            self.center()
    
        def center(self):
            screen = QDesktopWidget().screenGeometry()
            size = self.geometry()
            self.move(int((screen.width() - size.width()) / 2), int((screen.height() - size.height()) / 2))
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        win = MainWindows()
        win.show()
        sys.exit(app.exec_())
    

    实例:关闭主窗口

    import sys
    from PyQt5.QtWidgets import QMainWindow, QHBoxLayout, QPushButton, QApplication, QWidget
    from PyQt5.QtGui import QIcon
    
    
    class WinForm(QMainWindow):
    
        def __init__(self, parent=None):
            super(WinForm, self).__init__(parent)
            self.setWindowTitle("DemoForCloseWindows")
            self.button1 = QPushButton("Close Windows")
            self.button1.clicked.connect(self.onButtonClick)
            self.setWindowIcon(QIcon('../image/cartoon2.ico'))
    
            layout = QHBoxLayout()
            layout.addWidget(self.button1)
    
            main_frame = QWidget()
            main_frame.setLayout(layout)
            self.setCentralWidget(main_frame)
    
        def onButtonClick(self):
            sender = self.sender()
            print(sender.text(), "has been clicked.")
            qApp = QApplication.instance()
            qApp.quit()
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        form = WinForm()
        form.show()
        sys.exit(app.exec_())
    
    



    如有侵权,请联系删除

    相关文章

      网友评论

        本文标题:PyQt5学习笔记4 - QMainWindow

        本文链接:https://www.haomeiwen.com/subject/evmsrltx.html