【问题标题】:Menu behaviour in PySimpleGUI and PySimpleGUIQtPySimpleGUI 和 PySimpleGUIQt 中的菜单行为
【发布时间】:2021-10-31 21:50:02
【问题描述】:

我是 PySimpleGUI 的新手,但我非常喜欢它。到目前为止,我开发的简单 GUI 可以很好地与 PySimpleGUI 和 PySimpleGUIQt 配合使用。但是今天,我对一些不能无缝转换的东西嗤之以鼻。这是一个非常简单的菜单:

import PySimpleGUI as sg
...
    sg.theme('LightGreen5')
    menu_def = [['&File', ['&Open', 'C&lose'],]]

    layout = [[sg.Menu(menu_def, background_color=('white'), text_color=('black'), \
              font=('Arial'))], \ ...

这不适用于 PySimpleGUIQt。它抱怨background_colortext colours,以及font 选项。但如果我删除这些选项,只留下

    layout = [[sg.Menu(menu_def)], \ ...

它确实有效,但会产生相当俗气、无味的菜单。

我更喜欢 Qt 而不是 tkinter(或者在 PySimpleGUIQt 没有被导入和使用时使用的任何东西)但不知道如何使用 Qt 并且有 tkinter 生成的漂亮菜单(或其他什么,等等)。我是否必须创建两个不同的版本,一个用于 Qt,另一个用于 [whatever]?有什么建议么?谢谢。

【问题讨论】:

    标签: pysimplegui


    【解决方案1】:

    PySimpleGUIQt 只是一个用户 Alpha,所以在 sg.Menu 中没有选项 text_colorfont

    这是为sg.Menu 提供颜色和字体的解决方法。

    import PySimpleGUIQt as sg
    
    def menu_options(menu):
    
        style = """
            QMenuBar {
                background-color : white;
            }
            QMenuBar::item {
                spacing: 0px;
                padding: 2px 10px;
                background-color: white;
                color: black;
            }
            QMenuBar::item:selected {
                color: white;
                background-color: red;
            }
            QMenuBar::item:pressed {
                color: white;
                background: blue;
            }
            QMenu {
                color: black;
                background-color: white;
                border: 1px solid black;
                margin: 2px;
            }
            QMenu::item {
                background-color: transparent;
            }
            QMenu::item:selected {
                background-color: blue;
                color: white;
            }
        """
    
        menu = menu.Widget
        menu.setStyleSheet(style)
    
        font = sg.QFont('Courier New', 16, sg.QFont.Bold, True) # Family, size, bold, italic
        font.setUnderline(True)
        font.setStrikeOut(True)
        menu.setFont(font)
        for submenu in menu.findChildren(sg.QMenu):
            submenu.setFont(font)
    
    sg.theme('LightGreen5')
    menu_def = [
        ['&File', ['&Open', 'C&lose'],],
        ['&Edit', ['&Copy', '&Paste'],],
    ]
    layout = [
        [sg.Menu(menu_def, key='-MENU-')],
        [sg.Text("Hello World", font=('Arial', 24))],
    ]
    window = sg.Window('Title', layout, finalize=True)
    menu_options(window['-MENU-'])
    
    window.read()
    window.close()
    

    【讨论】:

      猜你喜欢
      • 2020-12-02
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2021-09-11
      • 1970-01-01
      相关资源
      最近更新 更多