iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
Software Development

Python GUI 專案設計模式及好用的開發技巧系列 第 30

今晚,我想來點。。。 (菜單在哪?)

今晚,我想來點。。。 這是之前很流行的廣告台詞,會讓人聯想到菜單在哪? 那要怎麼在Python GUI 中做出菜單呢?

Menu bar,雖然是很重要的功能。但筆者不愛用,那還是來簡單了解下該怎麼使用

  • 工具: PySide2 / PySide2-Designer
  • QMenu
    只有提供列表功能,每個選項都可以自訂義,但實際上每個選項內容就是一個QAction
  • QAction
    串接Signal / Slot是實際執行操作的物件,可以直接用手刻的方式做出來或直接從Designer中靜態產出

懶人版作法:

  • 直接產生靜態程式碼後,呼叫來用,不用手刻
  1. 打開PySide2-Designer
  2. 在上面的在此輸入 直接輸入FileOpen
  3. 打完後就會看到一個雛形
  4. 轉成Python 程式碼從
    • 表單\ View Python Source code
  5. 存好檔後,回到有Ui_MainWindow 的python 檔案
  6. 新增menu event
    self.ui.actionOpen.triggered.connect(lambda: self.mnuOpenFile())
    self.ui.actionExport.triggered.connect(lambda: self.mnuExportConfig())
  1. 撰寫功能
    @QtCore.Slot()
    def mnuOpenFile(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        fileName, _ = QFileDialog.getOpenFileName(
            None,
            "Import the config ... ",
            "",
            "All Files (*);;Python Files (*.py)",
            options=options,
        )
        print(fileName)

    @QtCore.Slot()
    def mnuExportConfig(self):
        pass

[筆記] 由於筆者有使用到File Dialog的功能,必須先在header匯入QFileDialog

效果

後記:
原本在今年的鐵人賽中是要手做出資料清洗工具,但跟工作內容實在是重疊度太高,加上太忙導致這個想法短期無法實現。但未來應該會直接寫在自己的Medium 上並以開源的方式分享出來。如同車子市場有V2X (vehicle for everything),那我為何不可以來自幹個U2X (UART for everything)。


上一篇
關於code signing [程式碼簽章] 這檔事 ...
下一篇
如何在Python GUI 中隨時記錄log並顯示在UI上呢?
系列文
Python GUI 專案設計模式及好用的開發技巧31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言