В моем коде я пытаюсь сделать калькулятор. Итак, есть кнопка 1
, которая при нажатии обновляет текст Question:
, добавляя 1
к его тексту. Поэтому, когда я нажимаю 1
, текст преобразуется из Question:
в Question: 1
. Но он не обновляется. Я тоже сталкивался с этой проблемой раньше. Я думаю, что когда я делаю .update
, он будет обновлять значение только до того количества букв, которое уже есть в тексте. Если в нем 2 буквы, и я попытаюсь .update('123')
, он обновится только до 12
. Есть ли способ обойти это???
import PySimpleGUI as sg
layout = [
[sg.Text('Question: ', key='-IN-')],
[sg.Text('Answer will be shown here', key='-OUT-')],
[sg.Button('1'), sg.Button('2'), sg.Button('3')],
[sg.Button('4'), sg.Button('5'), sg.Button('6')],
[sg.Button('7'), sg.Button('8'), sg.Button('9')],
[sg.Button('Enter'), sg.Button('Exit')]
]
window = sg.Window('calculator', layout)
while True:
event, values = window.read()
if event is None or event == 'Exit':
break
elif event == '1':
bleh = window['-IN-'].get()
teh = f'{bleh}1'
window['-IN-'].update(value=teh)
window.close()
Это вызвано длиной текстового элемента, это будет длина исходной строки, если опция size
не определена. Итак, вы сделали обновление, но не отображались слишком долго, чтобы отображать его на коротком текстовом элементе. Предлагаем вам использовать sg.InputText
с опцией readonly=True
.
@JasonYang спасибо за ответ!!!
Как указано выше, пример, подобный этому,
import PySimpleGUI as sg
layout = [
[sg.InputText('Question: ', readonly=True, key='-IN-')],
[sg.Text('Answer will be shown here', key='-OUT-')],
[sg.Button('1'), sg.Button('2'), sg.Button('3')],
[sg.Button('4'), sg.Button('5'), sg.Button('6')],
[sg.Button('7'), sg.Button('8'), sg.Button('9')],
[sg.Button('Enter'), sg.Button('Exit')]
]
window = sg.Window('calculator', layout)
input = window['-IN-']
while True:
event, values = window.read()
if event is None or event == 'Exit':
break
elif event in '1234567890':
bleh = window['-IN-'].get()
teh = f'{bleh}{event}'
input.update(value=teh)
input.Widget.xview("end") # view end if text is too long to fit element
window.close()
Я новичок в PySimpleGui, поэтому 😅