【问题标题】:I can't get button name to appear on gui or input to be saved when clicking on button using PySimpleGui使用 PySimpleGui 单击按钮时,我无法在 gui 上显示按钮名称或保存输入
【发布时间】:2021-10-02 17:28:48
【问题描述】:

我正在使用 PySimpleGUI,我希望能够单击一个按钮并将其显示在按钮下的文本上作为选择。选项是拆分或数据填充,但我无法弄清楚如何让事件处理程序更新文本或保存该选项,然后让代码根据该选项采取相应的行动。

到目前为止的代码看起来有点像这样

import PySimpleGUI as sg

layout = [
          [sg.Text('Would you like to SPLIT or SPLIT AND DATA POPULATE')],
          [sg.Button('Split', key='-SPLIT-'), sg.Button('Split and Populate', key ='-SANDP-')],
          [sg.Text('Current Process:'), sg.Text('Process', key='-PROCESS-')]
         ]
window = sg.Window('Title', layout,size=(1000,500))

while True:
    event, values = window.read()
    if event is None or event == 'EXIT':
        break
    if event == '-SPLIT-':
        window['-PROCESS-'].update(values("-SPLIT-"))
        choice1 = window['-PROCESS-'].update("split")
    if event == '-Split and Populate-':
        window['-PROCESS-'].update("Split and Populate")
        choice2 = window['-PROCESS-'].update("Split and Populate")
window.close()

#psuedo code following
if choice1
    bla bla bla
if choice2
    bla bla bla

我希望能够单击并将该按钮名称存储在选择 1 或选择 2 中,并且该按钮名称也出现在 gui 中,这可能吗?

【问题讨论】:

    标签: python user-interface pysimplegui


    【解决方案1】:

    如果选项keyk 未指定且不重复,则密钥将是sg.Buttonbutton_text,因此没有“-Split and Populate-”事件。

    大多数时候,sg.Button 的值不会改变,因此它不会是来自sg.Window().readvalues 中的数据。要在sg.Button 上获取文本,您可以调用sg.Button 的方法get_text

    对于当你点击sg.Button或其他元素时元素的key产生的事件,然后在if ... elif ... else ...语句中决定做什么。

    import PySimpleGUI as sg
    
    layout = [
        [sg.Text('Would you like to SPLIT or SPLIT AND DATA POPULATE')],
        [sg.Button('Split', key='-SPLIT-'),
         sg.Button('Split and Populate', key ='-SANDP-')],
        [sg.Text('Current Process:'),
         sg.Text('Process', size=(0, 1), key='-PROCESS-')]
    ]
    window = sg.Window('Title', layout, size=(1000,500))
    
    while True:
    
        event, values = window.read()
    
        if event is None or event == 'EXIT':
            break
    
        elif event in ('-SPLIT-', '-SANDP-'):
            window['-PROCESS-'].update(value=window[event].get_text())
            if event == '-SPLIT-':
                pass
            elif event == '-SANDP-':
                pass
    
    window.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多