PySimpleGui: как ввести текст в текстовое поле?

Я изучаю PySimpleGui, обращаясь к учебникам на

Ссылка 1 и Ссылка-2

Мне нужно добавить кнопки в мой макет, чтобы ввести значение, а затем отобразить значение в соседнем текстовом поле.

До сих пор я смог создать кнопки и текстовые поля.

Ниже приведен мой код: -

import PySimpleGUI as sg

layout = [[sg.Text('Enter Value:')],
          [sg.Input(do_not_clear=False), sg.Text('Value selected is:'), sg.Text(sg.InputText(""), key='_USERNAME_')],
          [sg.Button('Enter'), sg.Exit()],
          [sg.Text('List Of Values:')],
          [sg.Listbox(values=('value1', 'value2', 'value3'), size=(30, 2), key='_LISTBOX_')]]

window = sg.Window('My Application', layout)

while True:
    event, values = window.Read()
    print(event, values)
    if event is None or event == 'Exit':
        break
    if event == 'Enter':
        window.Element('_LISTBOX_').Update(values=[event, values, 'new value 3'])
        #window.Element('_USERNAME_').Update(values=[values]) #need to update the text box with value entered
window.Close()

Однако я не могу отобразить введенное значение в текстовом поле. Я добавил комментарий в код (который пока дает ошибку), где мне нужно обновить текстовое поле с введенным значением.

Пожалуйста помоги!

Изменить: мне удалось отобразить значение во всплывающем окне, но мне нужно отобразить его в текстовом поле.


person Sandrocottus    schedule 23.03.2020    source источник


Ответы (2)


Я понял,

Следующий код служит моей цели: -

import PySimpleGUI as sg

layout = [[sg.Text('Enter Value:')],
          [sg.Input(do_not_clear=False), sg.T('Not Selected ', size=(52,1), justification='left',text_color='red', background_color='white', key='_USERNAME_')],
          [sg.Button('Enter'), sg.Exit()],
          [sg.Text('List Of Values:')],
          [sg.Listbox(values=('value1', 'value2', 'value3'), size=(30, 2), key='_LISTBOX_')]]

window = sg.Window('My Application', layout)

while True:
    event, values = window.Read()
    print(event, values)
    if event is None or event == 'Exit':
        break
    if event == 'Enter':
        window.Element('_LISTBOX_').Update(values=[event, values, 'new value 3'])
        window.FindElement('_USERNAME_').Update(values[0])
window.Close()
person Sandrocottus    schedule 23.03.2020

Вы можете обновлять элементы напрямую, ссылаясь на них, используя их ключ в объекте окна:

например, согласно вашим обновлениям

window['_LISTBOX_'].Update(values=[event, values, 'new value 3'])
window['_USERNAME_'].Update(values[0])
person Ray    schedule 08.07.2021