Python 停止语句执行直到为true
我正在尝试使用Python 停止语句执行直到为true,python,python-3.x,pysimplegui,Python,Python 3.x,Pysimplegui,我正在尝试使用pysimplegui处理用户输入 如果用户在输入框中输入任何值,我需要确保它是整数类型 如果成功,我需要用默认值替换用户输入值 我尝试在while循环中使用try除了之外。这里我关心的是,如果用户输入一个字符串值,我需要提供一个重试选项 但是,正在执行try块下面的ifelse块。 如何确保为用户提供重试输入值的选项 import PySimpleGUI as sg sg.theme('SandyBeach') layout = [ [sg.Text('Please
pysimplegui
处理用户输入
如果用户在输入框中输入任何值,我需要确保它是整数类型
如果成功,我需要用默认值替换用户输入值
我尝试在while
循环中使用try
除了之外。这里我关心的是,如果用户输入一个字符串值,我需要提供一个重试选项
但是,正在执行try
块下面的if
else
块。
如何确保为用户提供重试输入值的选项
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
s意味着它只会在两种情况下停止运行。
输入一个有效的数字。或者按下退出按钮
重新分配一个log\u timer
的位置意味着它可以从默认值更改的唯一方法是输入有效的数字
if type(user_input) == int:
log_timer = user_input
print(log_timer)
elif log_timer == 1200:
print("no cha")
window.close()
一旦您学习了函数等等,显然还有一些改进需要做。但这是一个很好的起点。你的第二个,而True:
是无用的。在这两种情况下,你都可以打破它。为了检查我添加了,因为如果我在尝试和保持时删除了中断,除非ui卡在循环中,你能建议修复它吗?这是我正在寻找的