Текст не обновляется в PySimpleGui

В моем коде я пытаюсь сделать калькулятор. Итак, есть кнопка 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()

Я новичок в PySimpleGui, поэтому 😅

SYCK playz 13.12.2020 07:57

Это вызвано длиной текстового элемента, это будет длина исходной строки, если опция size не определена. Итак, вы сделали обновление, но не отображались слишком долго, чтобы отображать его на коротком текстовом элементе. Предлагаем вам использовать sg.InputText с опцией readonly=True.

Jason Yang 13.12.2020 10:19

@JasonYang спасибо за ответ!!!

SYCK playz 13.12.2020 11:40
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
3
5 454
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как указано выше, пример, подобный этому,

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()

Другие вопросы по теме