PyQt5教程-07-選單欄、工具欄、狀態列
選單與工具欄在GUI開發中可以說是必不可少的一部分。所以在PyQt5教程的這一部分,我們將學會建立選單和工具欄。選單是一組位於選單欄中的命令。工具欄是應用程式中的一些常用命令的按鈕。
Main Window主視窗
在PyQt5中,選單與工具欄只出現在在主應用程式視窗(QMainWindow 類)。在主視窗的框架中包括了“狀態列、工具欄和選單欄”。
Statusbar狀態列
statusbar是用於顯示控制元件的狀態資訊。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
這個程式將建立狀態列。
作者:我的世界你曾經來過
部落格:http://blog.csdn.net/weiaitaowang
最後編輯:2016年7月31日
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage('這裡是狀態列...')
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('狀態列' )
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在這個例子中 狀態列 顯示的是QMainWindow 控制元件的狀態資訊。
self.statusBar().showMessage('這裡是狀態列...')
為了獲得QMainWindow 控制元件的狀態資訊,我們首先呼叫QMainWindow 的 statusBar() 方法建立狀態列,然後用 showMessage() 顯示反饋到狀態列的資訊。
程式執行後
Menubar選單欄
選單欄是GUI應用程式的公共部分,它包括一組不同的命令。(Mac OS選單欄不同,為獲得類似效果我們可以在程式碼中新增下面一行:menubar.setNativeMenuBar(False)
)
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
在該程式中建立了一個選單欄,在選單欄有一個選單響應退出動作。
作者:我的世界你曾經來過
部落格:http://blog.csdn.net/weiaitaowang
最後編輯:2016年7月31日
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, qApp
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAction = QAction(QIcon('F:\Python\PyQt5\MenusAndToolbar\images\exit.png'), '&退出', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('退出應用程式')
exitAction.triggered.connect(qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&檔案')
fileMenu.addAction(exitAction)
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('選單欄')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在上面的例子中,我們為選單欄建立了一個選單。此選單響應退出動作,如果選擇將終止應用程式。狀態列顯示的是該動作的資訊。該行動的快捷鍵是Ctrl+ Q。
exitAction = QAction(QIcon('F:\Python\PyQt5\MenusAndToolbar\images\exit.png'), '&退出', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('退出應用程式')
QAction 是為 選單欄, 工具欄, 或是自定義的快捷鍵 執行的抽象動作物件。上面三行中,第一行我們為抽象動作物件(QAction)建立了一個圖示(QIcon)和退出標籤(&退出)並附加到父類(self)。第二行設定了抽象動作的快捷鍵。第三行設定了抽象動作的在狀態列顯示的資訊,當我們將滑鼠懸停在選單項的滑鼠指標狀態提示。
exitAction.triggered.connect(qApp.quit)
這個抽象動作物件(exitAction)的觸發訊號(triggered)連線(connect)到槽(qApp.quit),quit()方法將終止該應用程式。
menubar = self.menuBar()
fileMenu = menubar.addMenu('&檔案')
fileMenu.addAction(exitAction)
menuBar()方法將建立一個選單欄,建立完選單欄後新增(addMenu)一個選單,最後為選單新增(addAction)我們上面的抽象動作(exitAction)。
程式執行後
Toolbar工具欄
應用程式中選單裡的所有命令我們都可以在工具欄以圖示按鈕的形式供快速訪問。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
該程式建立一個工具欄。
工具欄有一個動作,如果被觸發,會終止應用程式。
作者:我的世界你曾經來過
部落格:http://blog.csdn.net/weiaitaowang
最後編輯:2016年7月31日
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, qApp
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAction = QAction(QIcon('F:\Python\PyQt5\MenusAndToolbar\images\exit.png'), '&退出', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('退出應用程式')
exitAction.triggered.connect(qApp.quit)
self.statusBar()
self.toolbar = self.addToolBar('退出')
self.toolbar.addAction(exitAction)
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('工具欄')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在上面的例子中,我們建立一個工具欄。工具欄有一個工具的動作,觸發時它時將執行退出動作而終止應用程式。
exitAction = QAction(QIcon('F:\Python\PyQt5\MenusAndToolbar\images\exit.png'), '&退出', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('退出應用程式')
exitAction.triggered.connect(qApp.quit)
上面的內容與選單欄的例子類似。我們建立了一個操作物件,該物件有一個標籤,圖示和快捷方式,滑鼠放在上面時狀態列會顯示該物件的簡要說明。觸發訊號連線到quit()方法。
self.toolbar = self.addToolBar('退出')
self.toolbar.addAction(exitAction)
在這裡,我們建立了一個工具欄並放入(addAction)操作物件。
程式執行後
綜合例項
最後一個例子是我們將選單欄、狀態列、工具欄合在一起使用,另外,我們還將在中間建立一個文字控制元件。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
PyQt5 教程
這個程式建立一個典型的GUI應用程式框架,
包括選單欄,工具欄,狀態列,和一個文字輸入控制元件。
作者:我的世界你曾經來過
部落格:http://blog.csdn.net/weiaitaowang
最後編輯:2016年7月31日
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, QTextEdit
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
textEdit = QTextEdit()
self.setCentralWidget(textEdit)
exitAction = QAction(QIcon('F:\Python\PyQt5\MenusAndToolbar\images\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)
self.toolbar = self.addToolBar('退出')
self.toolbar.addAction(exitAction)
self.setGeometry(300, 300, 400, 300)
self.setWindowTitle('主視窗')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
示例建立了一個選單欄、工具欄和一個狀態列,這是經典GUI應用程式的框架。
textEdit = QTextEdit()
self.setCentralWidget(textEdit)
在這裡,我們建立一個文字編輯控制元件。我們將其設定成為QMainWindow中的中心控制元件。中心控制元件將佔用剩下的所有空間。
程式執行後
在PyQt5教程的這一部分,我們學會了使用選單欄、工具欄、狀態列,和主應用程式視窗。接下來的內容將是PyQt5在GUI程式設計中的佈局管理。