Вернуться в главное окно после сбоя - PySimpleGUI

Когда я запускаю следующий код, он, как и ожидалось, вылетает из-за отсутствия переключателя. Как видите, у меня есть окно вывода ошибок. Я хотел бы вернуться к main_window, как только я нажму OK во всплывающем окне с ошибкой. Прямо сейчас, если я нажму OK во всплывающем окне с ошибкой, main_window зависнет и программа выйдет из строя. Любая помощь будет принята с благодарностью.

import traceback
import PySimpleGUI as sg


sg.theme('Material2')   

layout = [  [sg.Text('Test Window', font = 'Comic',text_color='green')],
            [sg.InputText('Use Browse button'), sg.FileBrowse()],
            [sg.Button('Submit'), sg.Button('Cancel')] 
         ]

main_window = sg.Window('OS Met Processor', layout)

try:
    
    while True:
        event, values = main_window.read()
        if event in (None, 'Cancel'):
            break
        
        values = {k: v for k, v in values.items() if v} 
    
        if values['RadioYes']:   
            values = {k: v for k, v in values.items() if v} 
            sg.Popup('Done!')
            main_window.close() 

except Exception as e:
    tb = traceback.format_exc()
    sg.popup_ok(f'ERROR!', e, tb)

person sree_dawg    schedule 29.07.2020    source источник


Ответы (1)


Вы должны использовать try и except внутри цикла while.

попробуй это :

while True:
    event, values = main_window.read()
    if event in (None, 'Cancel'):
        break
    
    values = {k: v for k, v in values.items() if v} 
    try:    
        if values['RadioYes']:   
            values = {k: v for k, v in values.items() if v} 
            sg.Popup('Done!')
            main_window.close() 

    except Exception as e:
        tb = traceback.format_exc()
        sg.popup_ok(f'ERROR!', e, tb)
person Bhargav Desai    schedule 31.07.2020