如果用户在没有输入任何内容的情况下单击tkinter askstring框上的"确定",我希望弹出一个警告消息框,然后向用户显示另一个askstring框。在下面的代码中,我试图通过递归调用来实现这一点。我看到以下两种行为:
- 用户在askstring的第一个实例的文本字段中输入数据,单击"确定"。该函数返回输入的值
- 用户将第一个askstring实例的文本字段留空,单击"确定",响应警告消息框,在第二个askstring实例中输入数据。函数返回None
这里发生了什么?
import tkinter as tk
from tkinter import simpledialog
from tkinter import messagebox
def entry():
temp=simpledialog.askstring("","")
if len(temp) == 0:
messagebox.showwarning("Oh oh","you gotta enter something here")
entry()
else:
return(temp)
y = entry()
print (y)
多亏了acw1668,我将代码改为while循环,而不是递归,现在得到了所需的结果。这是我的解决方案:
import tkinter as tk
from tkinter import simpledialog
from tkinter import messagebox
def entry():
temp=simpledialog.askstring("","")
while len(temp) == 0:
messagebox.showwarning("Oh oh","you gotta
enter something here")
temp = simpledialog.askstring("", "")
else:
return temp
y = entry()
print (y)