【问题标题】:How to raise an event when Enter is pressed into an InputText in PySimpleGUI如何在 PySimpleGUI 中的 InputText 中按下 Enter 时引发事件
【发布时间】:2021-07-26 10:26:51
【问题描述】:

我是 Python 和 PySimpleGUI 的新手,我不知道如何强制我的应用程序处理事件键;这是我的代码:

    # Text field
    sg.InputText(
        key=key,
        default_text='',
        enable_events=True,
    ),


    ...


    window = self.graphic_interface.window

    while self.is_running:
        self.event, self.values = window.read(timeout=0)

    ...


    if event in INSERT_SN_KEYS:
        key = event

        if values[key]is not None:
            # Accept only numbers
            if values[key][-1] not in '0123456789':
                window[key].update(values[key][:-1])

我的代码可以处理用户按下的任何键,除了 ;我还没有找到任何 InputText 的参数,类似于 Button 类中使用的“bind_return_key=True”。 我该怎么做? 谢谢

【问题讨论】:

    标签: python tkinter pysimplegui


    【解决方案1】:

    使用sg.Input的方法bind("<Return>", key_modifier)在窗口结束后,当这个元素聚焦并按下回车键时会产生一个事件sg.Input().Key + key_modifier

    import PySimpleGUI as sg
    
    sg.theme("DarkBlue3")
    sg.set_options(font=("Courier New", 16))
    
    layout = [
        [sg.Input("Enter to generate an event",     key='Input1')],
        [sg.Input("Enter not to generate an event", key='Input2')],
    ]
    window = sg.Window('Title', layout, finalize=True)
    window['Input1'].bind("<Return>", "_Enter")
    
    while True:
        event, values = window.read()
        if event == sg.WINDOW_CLOSED:
            break
        elif event == "Input1" + "_Enter":
            print(event)
    
    window.close()
    

    【讨论】:

    • 完美,正是我所需要的。谢谢
    猜你喜欢
    • 2018-12-24
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多