任何人都知道python将在input()
处停止或暂停,这使得很难获得超时输入,这是可能的:
import tkinter as tk
class ExampleApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
def well():
whatis = entrybox.get()
if whatis == "": # Here you can check for what the input should be, e.g. letters only etc.
print ("You didn't enter anything...")
else:
print ("AWESOME WORK DUDE")
app.destroy()
global label2
label2 = tk.Button(text = "quick, enter something and click here (the countdown timer is below)", command = well)
label2.pack()
entrybox = tk.Entry()
entrybox.pack()
self.label = tk.Label(self, text="", width=10)
self.label.pack()
self.remaining = 0
self.countdown(10)
def countdown(self, remaining = None):
if remaining is not None:
self.remaining = remaining
if self.remaining <= 0:
app.destroy()
print ("OUT OF TIME")
else:
self.label.configure(text="%d" % self.remaining)
self.remaining = self.remaining - 1
self.after(1000, self.countdown)
if __name__ == "__main__":
app = ExampleApp()
app.mainloop()
我真正的问题是为什么代码在input
暂停,主要是有什么好处?
当然,如果我们可以绕过这个问题(对于我认为的任何事情),那么让代码像那样保持是愚蠢的。
也许应该有一个内置的功能来禁用暂停。这将使多线程更加容易,但是当您必须测试使用输入
创建的一些变量时,暂停非常方便:input1 = input("enter a big number")
if input1 >= 8:
print("That is a big number")
else:
print("That is tiny...")
如果在没有暂停的情况下运行,您将得到一个错误input1未定义,因此暂停是至关重要的。
一个好处?如果您的代码遇到一个应该设置的变量,但由于用户尚未输入值而不存在,则会引发错误。例如:
legal_age = 21
age = int(input("Your age: "))
if age >= legal_age:
print("You can drink legally!")
else:
print("You can't drink yet!")
一个基本的示例,但仍然是这样——如果没有值,Python将如何使用age变量,因为它没有暂停等待输入?
但是,对于想要在输入之后发生的进程,可以相当容易地使用线程。