停止语句执行直到为true



我正在尝试使用pysimplegui处理用户输入。

如果用户在输入框中输入任何值,我需要确保它是整数类型。

如果成功,我需要将用户输入值替换为默认值

我尝试在while循环中使用tryexcept。我关心的是,如果用户输入了一个字符串值,我需要给出一个重试选项。

然而,正在执行try块下方的ifelse块。如何确保为用户提供重新输入值的选项?

import PySimpleGUI as sg
sg.theme('SandyBeach')
layout = [
[sg.Text('Please enter your Phone')],
[sg.Text('Phone', size=(15, 1)), sg.InputText(key="lp1", do_not_clear=False)],
[sg.Button("e"), sg.Quit()]
]
window = sg.Window('Simple data entry window', layout)
while True:
event, values = window.read()
if event in (sg.WINDOW_CLOSED, "Quit"):
break
elif event == "e":
text = values['lp1']
log_timer = 1200
user_input = None
if text == '':
log_timer = 1200
else:
while True:
try:
user_input = int(text)
break
except ValueError:
sg.popup_error("Only Integer Allowed")
break

如果输入了字符串值,我需要停止下面的块。

if type(user_input) == int:
log_timer = user_input
print(log_timer)
elif log_timer == 1200:
print("no cha")
window.close()

代码中有很多噪声。当你把它减少到你需要的时候,它会变得更加清晰。

import PySimpleGUI as sg
sg.theme('SandyBeach')
layout = [
[sg.Text('Please enter your Phone')],
[sg.Text('Phone', size=(15, 1)), sg.InputText(key="lp1", do_not_clear=False)],
[sg.Button("e"), sg.Quit()]
]
window = sg.Window('Simple data entry window', layout)
# Add some defaults for user_input and log_timer
user_input = None
log_timer = 1200
while True:
event, values = window.read()
text = values['lp1']
# break on Quit
if event in (sg.WINDOW_CLOSED, "Quit"):
break
elif event == "e" and text != '':
# Attempt to convert to int
try:
user_input = int(text)
except ValueError:
sg.popup_error("Only Integers Allowed")
# If the attempt was unsuccessful user_input will remain None
if user_input is not None:
# the only place log_timer is changed from the default
log_timer = user_input
break
print(log_timer)
window.close()

代码中的两个break意味着它只会在两种情况下停止运行。输入一个有效的数字。或者按下了退出按钮。

重新分配log_timer的一个位置意味着它可以从默认值更改的唯一方法是输入有效的数字。

一旦你学习了函数等等,显然会有一些改进。但这是一个很好的起点。

最新更新