主窗口
QMainWindow類提供了一個應用主窗口。默認創(chuàng)建一個擁有狀態(tài)欄仿吞、工具欄和菜單欄的經(jīng)典應用窗口骨架志珍。
菜單式是于菜單欄的一組命令操作给涕。工具欄是應用窗體中由按鈕和一些常規(guī)命令操作組成的組件鬼佣。狀態(tài)欄是用來顯示狀態(tài)信息的組件驶拱。
一、狀態(tài)欄
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
class Example(QMainWindow): #狀態(tài)欄由QMainWindow組件幫助創(chuàng)建完成(依賴于QMainWindow組件)
def __init__(self):
super().__init__()
self.my_UI()
def my_UI(self):
self.statusBar().showMessage('一切正常')
#調(diào)用QtWidget.QMainWindow類的statusBar()方法晶衷,得到狀態(tài)欄
#第一次調(diào)用這個方法創(chuàng)建了一個狀態(tài)欄蓝纲。隨后方法返回狀態(tài)欄對象。然后用showMessage()方法在狀態(tài)欄上顯示一些信息晌纫。
#self.statusBar()
#self.statusBar().showMessage('一切正常')
self.setGeometry(300, 300, 300, 250)
self.setWindowTitle('狀態(tài)欄')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
二驻龟、菜單欄
菜單欄是GUI應用的常規(guī)組成部分。是位于各種菜單中的一組命令操作(Mac OS 對待菜單欄有些不同缸匪。為了獲得全平臺一致的效果,我們可以在代碼中加入一行:menubar.setNativeMenuBar(False))类溢。
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.my_UI()
def my_UI(self):
exitAction = QAction(QIcon('exit.png'), '&退出', self) #QAction是一個用于菜單欄凌蔬、工具欄或自定義快捷鍵的抽象動作行為
#給該行為顯示為退出露懒,插入圖標
exitAction.setShortcut('Ctrl+Q') #為這個動作定義一個快捷鍵
exitAction.setStatusTip('退出應用') #創(chuàng)建一個當我們鼠標浮于菜單項之上就會顯示的一個狀態(tài)提示
exitAction.triggered.connect(qApp.quit) #當我們選中特定的動作,一個觸發(fā)信號會被發(fā)射砂心。信號連接到QApplication組件的quit()方法懈词。這樣就中斷了應用。當我們選中特定的動作辩诞,一個觸發(fā)信號會被發(fā)射坎弯。信號連接到QApplication組件的quit()方法。這樣就中斷了應用译暂。
self.statusBar() #創(chuàng)建狀態(tài)欄抠忘,用來顯示上面的狀態(tài)提示
menubar = self.menuBar() #menuBar()方法創(chuàng)建了一個菜單欄
fileMenu = menubar.addMenu('文件&(F)') #創(chuàng)建一個文件菜單,設置快捷鍵F
fileMenu.addAction(exitAction) #將退出動作添加到file菜單中
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('菜單欄')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
三外永、工具欄
菜單可以集成所有命令崎脉,這樣我們可以在應用中使用這些被集成的命令。工具欄提供了一個快速訪問常用命令的方式伯顶。
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.my_UI()
def my_UI(self):
exitAction = QAction(QIcon('exit.png'), '退出', self) #創(chuàng)建了一個動作對象囚灼,和上面菜單欄一樣
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(qApp.quit)
self.toolbar = self.addToolBar('Exit') #創(chuàng)建了一個名為 Exit 的工具欄
self.toolbar.addAction(exitAction) #在其中插入一個動作對象
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('工具欄')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
四、組合使用
在上面的例子中祭衩,我們創(chuàng)建了菜單欄灶体、工具欄和狀態(tài)欄。下面我們將創(chuàng)建一個中心組件掐暮。
import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.my_UI()
def my_UI(self):
textEdit = QTextEdit() #創(chuàng)建一個文本編輯框組件
self.setCentralWidget(textEdit) #將它設置成QMainWindow的中心組件蝎抽。中心組件占據(jù)了所有剩下的空間。
exitAction = QAction(QIcon('exit.png'), '退出', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('退出應用')
exitAction.triggered.connect(self.close)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&文件')
fileMenu.addAction(exitAction)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exitAction)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('Main window')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
該代碼創(chuàng)建了一個帶有菜單欄劫乱、工具欄和狀態(tài)欄的經(jīng)典GUI應用骨架
(這次按退出連窗口也一起退出了织中?)