Python快速入門系列:PyQt5 快速開發GUI-窗口類型以及主窗口創建

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):
\t\tdef __init__(self, parent=None):
\t\tsuper(MainWindow, self).__init__(parent)
\t\t\t\tself.resize(400, 200)
\t\t\t\tself.status = self.statusBar()
\t\t\t\tself.status.showMessage("這是一個狀態欄", 5000)
\t\t\t\tself.setWindowTitle("主窗口實例")
if __name__ == "__main__":
\t\tapp = QApplication(sys.argv)
\t\tform = MainWindow()
\t\tform.show()
\t\tsys.exit(app.exec_())

效果圖:


Python快速入門系列:PyQt5 快速開發GUI-窗口類型以及主窗口創建

實例二


創建按鈕關閉主窗口&&主窗口居中顯示:

import sys 
from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget,QDesktopWidget
class MainWindow(QMainWindow):
\t\tdef __init__(self,parent=None):
\t\tsuper(MainWindow, self).__init__(parent)
\t\t\t\t#窗體設置
self.resize(300, 200)
\t\t\t\tself.setWindowTitle("關閉窗口")
\t\t\t\tself.center()
\t\t\t\t#按鈕設置
self.btn = QPushButton("關閉")
\t\t\t\tself.btn.clicked.connect(self.onBtnClickCloseWin) #單擊事件

#佈局
layout = QHBoxLayout()
\t\t\t\tlayout.addWidget(self.btn)
\t\t\t\twidGet=QWidget() widGet.setLayout(layout)
\t\t\t\tself.setCentralWidget(widGet)
\t\t
\t\t#窗體居中
def center(self):
\t\tself.size=QDesktopWidget().screenGeometry()
\t\t\t\tself.resize=self.geometry()
\t\t\t\tself.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2)
\t\tdef onBtnClickCloseWin(self):
\t\t#發送消息對象
sender=self.sender()
\t\t\t\tprint( sender.text() + ' 被按下了' )
\t\t\t\tappInstance=QApplication.instance()
\t\t\t\tappInstance.quit()
if __name__=="__main__":
\t\tapp=QApplication(sys.argv)
\t\tmainWindow=MainWindow()
\t\tmainWindow.show()
\t\tsys.exit(app.exec_())

效果圖:


Python快速入門系列:PyQt5 快速開發GUI-窗口類型以及主窗口創建

完結,後續持續更新PyQt5的相關內容.


分享到:


相關文章: