1. 程式人生 > >PyQt5學習--基本窗口控件--QMainWindow

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

iba nbu des 應用 ica 窗口 標題欄 ins __init__

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