我可以使用什么来代替一遍又一遍地检查某些内容的 while 循环?



>我有一个按钮,其功能是

def callback2():
callback()

callback()函数是

def callback():
usein = None
if inspect.stack()[1][3] == callback2:
global inputText
usein = inputText.get()
return None
while True: #freezes everything, because tkinter
if usein:
return usein

现在,我必须这样做的原因是因为其他函数调用callback()查找按钮输入的值,但我必须让它们等待按钮被按下。但是由于我使用的是 tkinter,while 循环不起作用 - 它只会使 GUI 冻结。那么我可以使用什么呢?我已经为此工作了好几天。如果需要,我很乐意添加代码的任何其他部分。

isButtonClicked = false #a global variable
def callback2():
isButtonClicked = true
callback()
isButtonClicked = false

一个想法可能是使用一个名为isButtonClicked的全局变量并分配一个假值,并修改调用回调方法的其他方法,如下所示:

def othermethod():
if isButtonClicked:
callback()

但是您必须确保变量是线程安全的。

不是 tkinter 专家,但如果您想通过单击按钮获得一些文本输入,以下内容可能有效。

def callback():
usein = entry.get()
# do whatever with usein
master = Tk()
entry = Entry(master)  # the text input
Button(master, text='Button', command=callback)

最新更新