Как очистить окно в PySimpleGUI - PullRequest
       125

Как очистить окно в PySimpleGUI

0 голосов
/ 19 апреля 2020

Я использую PySimple GUI для построения GUI. Как вы очищаете все виджеты в окне? В tkinter у вас есть код:

widget.destroy()

Если вы попытаетесь это сделать в PySimple GUI, вы получите ошибку:

NameError: name 'RWG' is not defined

, если мой виджет называется RWG. Я попытался сделать переменную RWG a global, но я получил ту же ошибку. Можно мне помочь? Мой код, который получает ошибку:

def oof():
    RWG.destroy()


import PySimpleGUI as sg
sg.theme("DarkAmber")
layout = [[sg.Text("Don't Even Try!!!")],
          [sg.Button("RWG")]]

window = sg.Window("Don't Even Try It", layout).Finalize()
window.Maximize()

while True:
    event, values = window.read()

    if event == "RWG":
        oof()

Буду признателен за любую помощь

1 Ответ

0 голосов
/ 19 апреля 2020

К сожалению в соответствии с MikeTheWatchGuy ЗДЕСЬ :

Вы не можете динамически изменять окно. Как только вы вызываете Layout, все готово.

Вы можете создать дополнительные поля и «скрыть» их, установив их цвет на фоне. Вы можете сделать это с помощью кнопок, например. Однако я не знаю, сможете ли вы сделать это очень хорошо с полями ввода.

Вы можете построить совершенно новое окно, чтобы заменить исходное одиночество. Это в основном то, что вы начали делать, но вам нужна оставшаяся часть определения макета окна в вашем блоке if 'key_add'. Кстати, вы не имеете в виду, если событие == 'key_add'?

Если вы делаете это, вы должны начать полностью с нуля. Вы не можете повторно использовать макет. У вас должна быть чистая раскладка при вызове раскладки.

На основании чьего-либо вопроса о github .

Обычно после использования layout для создания своего окна вы не можете изменить то, что на окне.

...