PySimpleGUI:在 OptionMenu 中获取选定值
PySimpleGUI: Get selected value in OptionMenu
在 Python 中使用 PySimpleGUI,我有一个 window,它有一个 OptionMenu 元素,它基本上是一个 TKinter 拉皮条组合框。
我想检索当前选中的元素。
有这个选项菜单:
sg.OptionMenu(default_value ='Live',values=('Live', 'Frozen', 'Delayed'),key='-MARKETDATA-')
通常您会使用它来获取选定的菜单项:
print(window['-MARKETDATA-'].get())
除了 OptionMenu class 没有 .get() 方法。
我可以使用以下方法获取选定的菜单项:
event2, values2 = window.Read(timeout=1)
print(values2['-MARKETDATA-'])
但这看起来并不优雅。
还有其他我忽略的更直接的方法吗?
sg.OptionMenu
中没有选项 enable_events
,也没有定义方法 get
。
在这里,我通过 trace
为它启用事件,并通过 values[key]
.
获取选定的值
import PySimpleGUI as sg
def callback(var, index, mode):
"""
For OptionMenu
var - tkinter control variable.
index - index of var, '' if var is not a list.
mode - 'w' for 'write' here.
"""
window.write_event_value("Language", window['Language'].TKStringVar.get())
sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 16))
data = ["Arabic", "Chinese", "English", "German", "Japanese", "Latin", "Spanish"]
layout = [
[sg.OptionMenu(data, default_value=data[2], key='Language')],
[sg.Button("Click")],
]
window = sg.Window('Title', layout, finalize=True)
window['Language'].TKStringVar.trace("w", callback)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == 'Language':
print(event, values['Language'])
elif event == 'Click':
print(event, values['Language'])
window.close()
在 Python 中使用 PySimpleGUI,我有一个 window,它有一个 OptionMenu 元素,它基本上是一个 TKinter 拉皮条组合框。 我想检索当前选中的元素。
有这个选项菜单:
sg.OptionMenu(default_value ='Live',values=('Live', 'Frozen', 'Delayed'),key='-MARKETDATA-')
通常您会使用它来获取选定的菜单项:
print(window['-MARKETDATA-'].get())
除了 OptionMenu class 没有 .get() 方法。
我可以使用以下方法获取选定的菜单项:
event2, values2 = window.Read(timeout=1)
print(values2['-MARKETDATA-'])
但这看起来并不优雅。 还有其他我忽略的更直接的方法吗?
sg.OptionMenu
中没有选项 enable_events
,也没有定义方法 get
。
在这里,我通过 trace
为它启用事件,并通过 values[key]
.
import PySimpleGUI as sg
def callback(var, index, mode):
"""
For OptionMenu
var - tkinter control variable.
index - index of var, '' if var is not a list.
mode - 'w' for 'write' here.
"""
window.write_event_value("Language", window['Language'].TKStringVar.get())
sg.theme("DarkBlue3")
sg.set_options(font=("Courier New", 16))
data = ["Arabic", "Chinese", "English", "German", "Japanese", "Latin", "Spanish"]
layout = [
[sg.OptionMenu(data, default_value=data[2], key='Language')],
[sg.Button("Click")],
]
window = sg.Window('Title', layout, finalize=True)
window['Language'].TKStringVar.trace("w", callback)
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event == 'Language':
print(event, values['Language'])
elif event == 'Click':
print(event, values['Language'])
window.close()