【PyQt503】選單和工具欄
選單和工具欄
選單式位於選單欄的一組命令操作。工具欄是應用窗體中由按鈕和一些常規命令操作組成的元件。
主視窗
QMainWindow類提供了一個應用主視窗。預設建立一個擁有狀態列、工具欄和選單欄的經典應用視窗骨架。
狀態列
狀態列是用來顯示狀態資訊的元件。
import sys from PyQt5.QtWidgets import QMainWindow,QApplication class Example(QMainWindow): def __init__(self): super(Example,self).__init__() self.initUI() def initUI(self): self.statusBar().showMessage("Ready") self.resize(600,400) self.move(200,200) self.setWindowTitle('StatusBar') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
狀態列由QMainWindow元件幫助建立完成(依賴於QMainWindow元件)。
self.statusBar().showMessage(‘Ready’)
為了得到狀態列,我們呼叫了QtGui.QMainWindow類的statusBar()方法。第一次呼叫這個方法建立了一個狀態列。隨後方法返回狀態列物件。然後用showMessage()方法在狀態列上顯示一些資訊。
選單欄
選單欄是GUI應用的常規組成部分。是位於各種選單中的一組命令操作(Mac OS 對待選單欄有些不同。為了獲得全平臺一致的效果,我們可以在程式碼中加入一行:menubar.setNativeMenuBar(False))。
import sys from PyQt5.QtWidgets import QMainWindow,QApplication,qApp,QAction from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super(Example,self).__init__() self.initUI() def initUI(self): exitAction = QAction (QIcon ('exit.png'), '&Exit', self) exitAction.setShortcut ('Ctrl+Q') exitAction.setStatusTip ('Exit application') exitAction.triggered.connect (qApp.quit) self.statusBar() menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(exitAction) self.setGeometry(200,200,600,400) self.setWindowTitle("Menubar") self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
在上面的例子中,我們建立了有一個選單項的選單欄。這個選單項包含一個選中後終端應用的動作。
exitAction = QAction (QIcon ('exit.png'), '&Exit', self)
exitAction.setShortcut ('Ctrl+Q')
exitAction.setStatusTip ('Exit application')
QAction是一個用於選單欄、工具欄或自定義快捷鍵的抽象動作行為。在上面的三行中,我們建立了一個有指定圖示和文字為“Exit”的標籤。靈位,還未這個動作定義了一個快捷鍵。第三行建立當我們滑鼠浮於選單項之上就會顯示的一個狀態提示。
exitAction.triggered.connect(qApp.quit)
當我們選中特定的動作,一個觸發訊號就會發射。訊號連線到QApplication元件的quit()方法。這樣就中斷了應用。
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
menuBar()方法建立了一個選單欄。我們建立一個file選單,然後將退出動作新增到file選單中。
工具欄
選單可以整合所有命令,這樣我們可以在應用中使用這些被整合的命令。工具欄提供了一個快速訪問常用命令的方式。
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,qApp,QAction
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super(Example,self).__init__()
self.initUI()
def initUI(self):
exitAction = QAction (QIcon ('images/huaji.png'), '&Exit', self)
exitAction.setShortcut ('Ctrl+Q')
exitAction.triggered.connect (qApp.quit)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
self.setGeometry(200,200,600,400)
self.setWindowTitle("Toolbar")
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
上述例子中,我們建立了一個簡單的工具欄。工具欄有一個動作,當這個退出動作被觸發時應用將會被中斷。
exitAction = QAction (QIcon ('images/huaji.png'), '&Exit', self)
exitAction.setShortcut ('Ctrl+Q')
exitAction.triggered.connect (qApp.quit)
我們建立了一個動作物件,和之前選單欄中的部分程式碼相似。這個動作有一個標籤,圖示和快捷鍵。並且將Qt.QMainWindow的quit()方法連線到了觸發訊號上。
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
這裡我們建立了一個工具欄,並且在其中插入一個動作物件。
將幾個元件放在一起使用
在上面的例子中,我們建立了選單欄、工具欄和狀態列。下面我們將建立一箇中心組建。
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QTextEdit,QAction
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super(Example,self).__init__()
self.initUI()
def initUI(self):
textEdit = QTextEdit()
self.setCentralWidget(textEdit)
exitAction = QAction(QIcon('images/huaji.png'),'Exit',self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.close)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exitAction)
self.move(200,200)
self.resize(600,400)
self.setWindowTitle('Main window')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在這裡我們建立了一個文字編輯框元件。我們將它設定成QMainWindow的中間元件。中心元件佔據了所有剩下的空間。