前言
本節我們學習使用Qt Designer設計選單欄、工具欄和狀態列,並完成一個串列埠工具的介面設計,在接下來教程中,我們將逐步實現一個串列埠除錯助手,並詳細介紹相關的其他知識點。
一、基礎知識
1.選單欄簡介
選單欄位於視窗上方,標題下面,選單欄中的選單屬於QMenu類,下拉選單和子選單屬於QAction類,點選任何QAction按鈕時,QMenu物件都會觸發triggered訊號,本教程主要使用Designer設計,所以不需要了解QMenu和QAction的具體建立和新增到選單欄等操作,僅需要關注triggered訊號即可。
Qmenu和QAction中常用方法如下:
2.工具欄簡介
QToolBar控制元件位於選單欄下方,是由文字按鈕,圖示或其他小控制元件按鈕組成的可移動面板,在Designer中可以通過在空白處右鍵選擇Add Tool Bar,和選單欄類似,每次點選工具欄中的按鈕,都會觸發Triggered訊號。
QToolBar中常用方法如下:
3.狀態列簡介
使用Qt Designer設計的MainWindow介面,最底部預設有一個水平狀態列(QstatusBar),用於顯示永久或臨時的狀態資訊
QStatusBar中常用方法如下:
二、例項
1. QT Designer設計UI
設計Main Window主頁面如下,選單欄中選單分別為編輯、顯示、工具、幫助,狀態列預設在最下方,可以在下方右鍵選擇Remove Status Bar刪除。
注意選單欄中的選單屬於QMenu類,下拉選單和子選單屬於QAction類
在UI介面下方空白處右鍵選擇Add Toor Bar,將選單欄子選單對應的Action拖動到Tool Bar中,並按照下圖方式為Action新增圖示。
其他Action按照同樣方法操作,最終結果如下圖:
2 將*.ui轉換為ui_action_tool.py
進入run.py目錄,輸入如下命令:
pyuic5 -o ui_action_tool.py action_tool.ui3 編寫python程式
import sysimport PyQt5.QtWidgets as qwimport ui_action_tool# sys.setrecursionlimit(1000000)class myForm(qw.QMainWindow, ui_action_tool.Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.statusbar.showMessage("status:ok") self.action_start.triggered.connect(self.action_start_cb) self.action_pause.triggered.connect(self.action_pause_cb) self.action_exit.triggered.connect(self.action_exit_cb) self.action_clear.triggered.connect(self.action_clear_cb) def action_start_cb(self): qw.QMessageBox.information(self, "提示", "您點選了Start") def action_pause_cb(self): qw.QMessageBox.information(self, "提示", "您點選了Pause") def action_exit_cb(self): qw.QMessageBox.information(self, "提示", "您點選了Stop") def action_clear_cb(self): qw.QMessageBox.information(self, "提示", "您點選了exit")if __name__ == '__main__': app = qw.QApplication(sys.argv) w1 = myForm() w1.show() app.exec_()上述程式為主頁面的action_start、action_pause、action_exit、action_clear分別新增triggered訊號對應的槽函式,槽函式中顯示messagebox做出不同提示。
三、執行
進入檔案目錄,輸入python3 run.py,即可彈出上述用QT Designer設計出來的MainWindow頁面。
四、結語(1) 注意選單欄中”編輯“下拉選單中開始、暫停、停止、清屏Action和工具欄中的圖片一一對應,都對應同一個triggered的槽函式。
寄語:沒有平白無故的運氣,一切都是長期努力的結果!