繁体   English   中英

PySimpleGUI:在 OptionMenu 中获取选定的值

[英]PySimpleGUI: Get selected value in OptionMenu

Using PySimpleGUI in Python, I have a window that has an OptionMenu element, which is basically a TKinter pimped combobox. 我想检索当前选定的元素。

有这个选项菜单:

sg.OptionMenu(default_value ='Live',values=('Live', 'Frozen', 'Delayed'),key='-MARKETDATA-')

通常,您会使用它来获取选定的菜单项:

print(window['-MARKETDATA-'].get())

除了 OptionMenu class 没有 a.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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM