#python #tkinter #pysimplegui
Вопрос:
Я пытаюсь обновить поле ввода PySimpleGUI. Это мой код:
import PySimpleGUI as sg layout=[ [sg.InputText('',key='-IN-')], [sg.InputText('',readonly='true',key='-RESULT-')] ] win=sg.Window('Test',layout) while True: event,values=win.Read() win['-RESULT-'].update(win['-IN-'].get())
Но я получаю такую ошибку :
Traceback (most recent call last): File "/data/user/0/ru.iiec.pydroid3/files/temp_iiec_codefile.py", line 9, in lt;modulegt; win['-RESULT-'].update(win['-IN-'].get()) File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.9/site-packages/PySimpleGUI/PySimpleGUI.py", line 1666, in update self.TKEntry.icursor(tk.END) File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.9/tkinter/__init__.py", line 3057, in icursor self.tk.call(self._w, 'icursor', index) _tkinter.TclError: invalid command name ".!toplevel.!frame2.!entry"
Комментарии:
1. Вы используете tkinter вместе с PySimpleGUI?
2. Да, я использую PySimpleGUI, а PySimpleGUI использует tkinter
Ответ №1:
Мы можем обнаружить, что есть только одно событие, которое является кнопкой закрытия окна, нажатой. После нажатия кнопки закрытия окна окно будет уничтожено, и вы ничего не сможете с ним поделать, поэтому вам нужно проверить, закрыто ли окно, и выйти из цикла while, чтобы закрыть окно.
Вы можете установить опцию enable_events=True
sg.Input
включения события, генерируемого при вводе.
import PySimpleGUI as sg layout = [ [sg.InputText('', enable_events=True, key='-IN-')], [sg.InputText('', readonly=True, key='-RESULT-')] ] win = sg.Window('Test',layout) while True: event, values = win.read() if event == sg.WINDOW_CLOSED: break elif event == '-IN-': # win['-RESULT-'].update(win['-IN-'].get()) text = values['-IN-'] win['-RESULT-'].update(text) win.close()
Комментарии:
1. Ура, я использовал событие, и оно сработало! Мне не нужно было использовать значения[-В-], я использовал window[‘-В-‘].get (), и это было нормально. Еще раз спасибо, теперь я сделал свой собственный калькулятор восьмеричных чисел, который автоматически обновляет результат.