菜单栏
整理 PySimpleGUI 官方网站
原文google翻译过来的
https://pysimplegui.readthedocs.io/en/latest/
您将找到有关Elements的信息,所有其他类和函数都位于本手册结尾处。它们位于自述文件的大部分中,按字母顺序排列以便于查找。本节对Elements的讨论旨在教您如何工作。另一部分包含详细的呼叫签名和参数定义。
菜单栏
从3.01版开始,您可以将MenuBar添加到窗口中。您可以使用与列表一样的窗口布局来指定菜单。从3.17开始,菜单选择作为事件返回,也与值字典一样。返回的值将是整个菜单项,包括键(如果已指定)。
menu_def = [['File', ['Open', 'Save', 'Exit',]],
['Edit', ['Paste', ['Special', 'Normal',], 'Undo'],],
['Help', 'About...'],]
注意’,'和[]的位置。正确实现嵌套菜单以实现级联菜单是很棘手的。查看粘贴后如何将特殊和普通作为列表。这意味着“粘贴”具有一个级联菜单,其中包含“特殊”和“普通”项。
方法
要将菜单添加到Window,请将Menu或MenuBar元素放入布局中。
layout = [[sg.Menu(menu_def)]]
将菜单元素放置在布局中的位置并不重要,因为它始终位于窗口顶部。
当用户选择一项时,它作为事件返回(如果在菜单定义中指定了一项,则返回菜单项的键)
按钮菜单
按钮菜单是在3.21版中引入的,该菜单先前已在PySimpleGUIQt中发布。它们的工作原理完全相同,并且是PySimpleGUI和PySimpleGUIQt之间的源代码兼容。这些类型的菜单采用单个菜单项,其中菜单栏采用菜单项列表。
ButtonMenus的返回值与菜单栏不同。
您将获得ButtonMenu的KEY作为事件。要选择实际的项目,您可以在值字典中查找它。这可以用表达式来完成values[event]
右键菜单
右键菜单在版本3.21中引入。几乎每个元素都有一个right_click_menu参数,并且有一个用于Rich Click菜单的窗口级设置,该设置会将右键单击菜单附加到窗口中的所有元素。
菜单定义与按钮菜单定义相同,只是一个菜单项。
right_click_menu = ['&Right', ['Right', '!&Click', '&Menu', 'E&xit', 'Properties']]
右键单击菜单和按钮菜单中的第一个字符串将被忽略。不使用。通常,您会将显示在菜单栏上的字符串放在该位置。
右键单击菜单的返回值与MenuBars相同。 所选的值作为事件返回。
菜单快捷键
您已在其他Windows程序中使用ALT键浏览菜单。例如,Alt-F + X退出程序。Alt-F下拉“文件”菜单。X选择标记为退出的条目。
好消息是PySimpleGUI允许您创建相同类型的菜单!您的程序可以和大佬们一起玩。而且,这很简单。
所需要做的就是在要显示的字母前加下划线“&”。按住Alt键时,您将看到带有标记的下划线的菜单。
您可以添加的另一点修饰是列表中的分隔符。要在菜单选项列表中添加一行,请创建一个如下所示的菜单项:'---'
这是带有下划线和分隔符的示例菜单。
# ------ Menu Definition ------ #
menu_def = [['&File', ['&Open', '&Save', '---', 'Properties', 'E&xit' ]],
['&Edit', ['Paste', ['Special', 'Normal',], 'Undo'],],
['&Help', '&About...'],]
这是它产生的精美菜单:
禁用的菜单项
如果您要禁用菜单项之一,请放置“!” 在菜单项前面。要在前面的示例中禁用“粘贴”菜单条目,该条目为: ['!&Edit', ['Paste', ['Special', 'Normal',], 'Undo'],]
如果您想将禁用的菜单项标志/字符从“!”更改为 给别的东西,改变变量MENU_DISABLED_CHARACTER
菜单键
从版本3.17开始,您可以将a添加key
到菜单项中。该key
值将被删除,然后再插入菜单。当您收到菜单事件时,将key返回整个菜单项,包括。通过::
在菜单项后添加,然后按键来指示键。
要将“。”添加key
_MY_KEY_
到“特殊”菜单项,代码应为:
['&Edit', ['Paste', ['Special::_MY_KEY_', 'Normal',], 'Undo'],]
如果要将指示键的字符从’::'更改为其他内容,请更改变量 MENU_KEY_SEPARATOR
菜单定义
仔细阅读“菜单”部分后,您可能已经注意到,右键单击菜单和按钮菜单的格式有些奇怪,因为其中一部分未被使用(第一个非常字符串)。也许在示例中应该使用“未使用”一词。…但是,有理由在其中保留有意义的词。
这样做的原因是结构上的原因,但对用户也很方便。您可以将单个菜单项(按钮和右键单击)放入列表,然后将具有菜单栏定义。
通过一系列这些单独的菜单定义,可以使菜单栏工作:
menu_bar = [right_click_menu_1, right_click_menu_2, button_menu_def ]
当然,方向也是相反的。您可以采用菜单栏定义并拉出单个菜单项以创建右键单击或按钮菜单。