您所在的位置: > 主页 > 安徽热线 > 财经 > 正文
Python快速入门系列:PyQt5 快速开发GUI-窗口类型以及主窗口创建来源: 日期:2020-03-23 06:37:31  阅读:-

    QMainWindow, QWidget, QDialog三个类都是用来创建窗口的,可以直接使用或继承后再使用。QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也是GUI程序的主窗口。QDialog是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户互动,它可以是模态的,也可以是非模态的。QDialog窗口没有菜单栏、工具栏、状态栏等。


    如果是主窗口,就用QMainWindow类。如果是对话框,就用QDialog类。如果不确定,或者有可能是顶层窗口,也有可能嵌入到其它窗口中,那就用QWidget类。


    创建主窗口


    如果一个窗口包含一个或多个窗口,那么这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口。QMainWindow就是一个顶层窗口。
    QMainWindow类中比较重要的方法,如下:

    addToolBar() : 添加工具栏

    centralWidget() : 返回窗口中心的一个控件,未设置时返回NULL

    menuBar() : 返回主窗口的菜单栏

    setCentralWidget() : 设置窗口中心的控件

    setStatusBar() : 设置状态栏

    statusBar() : 获取状态栏对象后,调用状态栏对象的showMessage(message, int timeout = 0)方法,显示状态栏信息。其中第一个参数是显示的状态栏信息;第二个参数是信息停留的时间,单位是毫秒,默认是0, 表示一直显示状态栏信息


    在开发GUI中,用Qt Designer虽然很方便,但是过于依赖,会导致很难理解QT的一些实现方法,我个人还是喜欢自己码代码。


    实例一

    创建一个简单的窗口:

    import sys from PyQt5.QtWidgets import QMainWindow, QApplication

    class MainWindow(QMainWindow):
    def __init__(self, parent=None):
    super(MainWindow, self).__init__(parent)
    self.resize(400, 200)
    self.status = self.statusBar()
    self.status.showMessage("这是一个状态栏", 5000)
    self.setWindowTitle("主窗口实例")
    if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    sys.exit(app.exec_())

    效果图:


    实例二


    创建按钮关闭主窗口&&主窗口居中显示:

    import sys 
    from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget,QDesktopWidget
    class MainWindow(QMainWindow):
    def __init__(self,parent=None):
    super(MainWindow, self).__init__(parent)
    #窗体设置
    self.resize(300, 200)
    self.setWindowTitle("关闭窗口")
    self.center()
    #按钮设置
    self.btn = QPushButton("关闭")
    self.btn.clicked.connect(self.onBtnClickCloseWin) #单击事件

    #布局
    layout = QHBoxLayout()
    layout.addWidget(self.btn)
    widGet=QWidget() widGet.setLayout(layout)
    self.setCentralWidget(widGet)

    #窗体居中
    def center(self):
    self.size=QDesktopWidget().screenGeometry()
    self.resize=self.geometry()
    self.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2)
    def onBtnClickCloseWin(self):
    #发送消息对象
    sender=self.sender()
    print( sender.text() + ' 被按下了' )
    appInstance=QApplication.instance()
    appInstance.quit()
    if __name__=="__main__":
    app=QApplication(sys.argv)
    mainWindow=MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

    效果图:


    完结,后续持续更新PyQt5的相关内容.

    (正文已结束)

    免责声明及提醒:此文内容为本网所转载企业宣传资讯,该相关信息仅为宣传及传递更多信息之目的,不代表本网站观点,文章真实性请浏览者慎重核实!任何投资加盟均有风险,提醒广大民众投资需谨慎!