Как изменять PySimpleGUI.Txt() с помощью переменной
Задача: Сделать текст в окне, который будет изменяться в реальном времени от изменения переменной
import PySimpleGUI as sg
f=open('conf.txt','r')
conf=f.readline()
f.close()
if conf==0:
condition='#Files decripted'
else:
condition='#Files encripted'
...
layout = [
[sg.Txt('',key="condition")]
]
...
event, values = window.read()
window[condition].Update(f"{str(condition)}")
Ответы (2 шт):
Автор решения: Yak73
→ Ссылка
- Вместо
window[condition].Update(f"{str(condition)}")
Используй:
window.Element("condition").Update(condition)
- У тебя не обновляется значение поля, так как функция window.read() останавливает поток выполнения программы до момента, пока не будет действия в интерфейсе. Одним из способов является использование кнопки: (после нажатия ok текст изменится)
layout = [ [sg.Text(size=(20,1), key="condition")], [sg.Ok()] ] window = sg.Window('', layout) while True: event, values = window.read() window.Element("condition").Update(condition)
Автор решения: Дмитрий Сентяй
→ Ссылка
window.Element("condition").Update(condition) - это старый способ (в документации к PySimpleGUI об этом говориться и рекомендуется использовать window[condition].Update())
А проблема с авто обновлением окна решается путем указания таймаута в мс:
event, values = window.read(100)