當前位置: 泰州之窗首頁 > 汽車 > 正文

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

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

QMainWindow, QWidget, QDialog三個類都是用來創建窗口的,可以直接使用或繼承后再使用。QMainWindow窗口可以包含菜單欄、工具欄、狀態欄、標題欄等,是最常見的窗口形式,也是GUI程序的主窗口。QDialog是對話框窗口的基類。

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的相關內容.

推薦閱讀:麒麟710處理器和驍龍660哪個好

[責任編輯:無]
正规男模特赚钱吗 一码四中四是真的吗 股市大盘分析 买中国体育彩票顶呱刮 海南4+1开奖官网 网上炒股开户 快乐彩浙江 微乐贵阳捉麻将开挂 北京赛车pk10怎么才能赢钱 四川麻将下载 全球股票指数