Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 停止语句执行直到为true_Python_Python 3.x_Pysimplegui - Fatal编程技术网

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卡在循环中,你能建议修复它吗?这是我正在寻找的