在 PySimpleGUI 中重新使用布局时出现问题
Issue when re-using layout in PySimpleGUI
我有一个使用 PySimpleGUI 的带有用户输入字段的弹出窗口。如果用户键入了错误的输入,我想在输入字段下方显示一些文本,说明他们需要再次输入。到目前为止,我的想法是下面的代码:
def start_pop_up(self, wrong_answer=False):
sg.theme('DarkAmber')
if wrong_answer:
layout = wrong_answer
else:
layout = initial
window = sg.Window('Please chose start settings', layout)
event, values = window.read()
if values['user_input']:
if test_user_input:
# Set some parameters accordingly .....
pass
else:
window.close()
self.start_pop_up(True)
window.close()
我的布局是这样的:
initial = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Submit()]]
wrong_answer = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Text('Wrong input, please input the correct answer.', text_color='red')],
[sg.Submit()]]
如果我输入错误的格式,则会显示正确的 window。但是,如果我再次尝试输入错误的答案,则会出现此错误:
我该如何解决这个问题?
问题已解决,但这是一个奇怪的行为,可能是一个错误。
我没有先将布局创建为变量,而是立即将它们放入布局 if/else 语句中,如下所示:
if wrong_answer:
layout = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Text('Wrong input, please input the correct answer.', text_color='red')],
[sg.Submit()]]
else:
layout = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Submit()]]
现在它可以正常工作了。似乎 PySimpleGUI 需要通过像这样打印出来来“重新初始化”布局。
我有一个使用 PySimpleGUI 的带有用户输入字段的弹出窗口。如果用户键入了错误的输入,我想在输入字段下方显示一些文本,说明他们需要再次输入。到目前为止,我的想法是下面的代码:
def start_pop_up(self, wrong_answer=False):
sg.theme('DarkAmber')
if wrong_answer:
layout = wrong_answer
else:
layout = initial
window = sg.Window('Please chose start settings', layout)
event, values = window.read()
if values['user_input']:
if test_user_input:
# Set some parameters accordingly .....
pass
else:
window.close()
self.start_pop_up(True)
window.close()
我的布局是这样的:
initial = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Submit()]]
wrong_answer = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Text('Wrong input, please input the correct answer.', text_color='red')],
[sg.Submit()]]
如果我输入错误的格式,则会显示正确的 window。但是,如果我再次尝试输入错误的答案,则会出现此错误:
我该如何解决这个问题?
问题已解决,但这是一个奇怪的行为,可能是一个错误。
我没有先将布局创建为变量,而是立即将它们放入布局 if/else 语句中,如下所示:
if wrong_answer:
layout = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Text('Wrong input, please input the correct answer.', text_color='red')],
[sg.Submit()]]
else:
layout = [[sg.Text('User input: ', size=(15, 1)), sg.InputText(size=(60, 1), key='user_input')],
[sg.Submit()]]
现在它可以正常工作了。似乎 PySimpleGUI 需要通过像这样打印出来来“重新初始化”布局。