PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

前言

本節我們學習使用Qt Designer設計菜單欄、工具欄和狀態欄,並完成一個串口工具的界面設計,在接下來教程中,我們將逐步實現一個串口調試助手,並詳細介紹相關的其他知識點。

一、基礎知識

1.菜單欄簡介

菜單欄位於窗口上方,標題下面,菜單欄中的菜單屬於QMenu類,下拉菜單和子菜單屬於QAction類,點擊任何QAction按鈕時,QMenu對象都會觸發triggered信號,本教程主要使用Designer設計,所以不需要了解QMenu和QAction的具體創建和添加到菜單欄等操作,僅需要關注triggered信號即可。

Qmenu和QAction中常用方法如下:

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

2.工具欄簡介

QToolBar控件位於菜單欄下方,是由文本按鈕,圖標或其他小控件按鈕組成的可移動面板,在Designer中可以通過在空白處右鍵選擇Add Tool Bar,和菜單欄類似,每次點擊工具欄中的按鈕,都會觸發Triggered信號。

QToolBar中常用方法如下:

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

3.狀態欄簡介

使用Qt Designer設計的MainWindow界面,最底部默認有一個水平狀態欄(QstatusBar),用於顯示永久或臨時的狀態信息

QStatusBar中常用方法如下:

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

二、實例

1. QT Designer設計UI

打開designer.exe,使用默認的Main Window創建,直接點擊Create按鈕即可

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

設計Main Window主頁面如下,菜單欄中菜單分別為編輯、顯示、工具、幫助,狀態欄默認在最下方,可以在下方右鍵選擇Remove Status Bar刪除。

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

注意菜單欄中的菜單屬於QMenu類,下拉菜單和子菜單屬於QAction類

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

在UI界面下方空白處右鍵選擇Add Toor Bar,將菜單欄子菜單對應的Action拖動到Tool Bar中,並按照下圖方式為Action添加圖標。

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

點擊OK按鈕後保存設置,界面如下:

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

其他Action按照同樣方法操作,最終結果如下圖:

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

2 將*.ui轉換為ui_action_tool.py

進入run.py目錄,輸入如下命令:

<code>pyuic5 -o ui_action_tool.py action_tool.ui/<code>

3 編寫python程序

<code>import sys
import PyQt5.QtWidgets as qw
import 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_()/<code>

上述程序為主頁面的action_start、action_pause、action_exit、action_clear分別添加triggered信號對應的槽函數,槽函數中顯示messagebox做出不同提示。

三、運行

進入文件目錄,輸入python3 run.py,即可彈出上述用QT Designer設計出來的MainWindow頁面。

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

點擊工具欄中最左邊開始圖片

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

點擊工具欄中左邊第二個暫停圖片

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

點擊工具欄中左邊第三個停止圖片

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

點擊工具欄中最右邊清除圖片

PyQt5快速上手基礎篇8-菜單欄、工具欄和狀態欄

四、結語

(1) 注意菜單欄中”編輯“下拉菜單中開始、暫停、停止、清屏Action和工具欄中的圖片一一對應,都對應同一個triggered的槽函數。

寄語:沒有平白無故的運氣,一切都是長期努力的結果!


分享到:


相關文章: