今晚,我想来点。。。 (菜单在哪?)

今晚,我想来点。。。 这是之前很流行的广告台词,会让人联想到菜单在哪? 那要怎麽在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)。


<<:  #30 下一步:TypeScript & Deno

>>:  切入的点好,就会好点

C#入门之文本处理(补充)

在前面,我们有讲解过 C# 的文本处理,这篇文章是对前面的内容的一个补充。 前面我们有讲解过,写入文...

[Python]使用Pillow,将图片由RGB转灰阶(Grayscale)

RGB -> Gray scale Gray scale(灰阶影像) from PIL imp...

html 汇入图片

今天来说如何汇入图片,我想要在标题栏的左侧加一个logo,避免版权问题我自己画了一个Logo的示意图...

Component 的 Component (不是递回)

这一篇单纯的介绍几个,重要又常被忽略的 Vue API 在 component 里又再包一个 co...

Day 23 - 在 PVE 内安装 Windows

今天我们在 PVE 内安装一下 Windows。 事前准备 Windows ISO(可以在 官网 下...