我可以使用什么而不是while循环来检查一遍又一遍?

时间:2017-06-22 00:29:58

标签: python python-3.x tkinter

我有一个功能

的按钮
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冻结。那么我可以使用什么呢?我已经做了好几天了。如果需要,我很乐意添加代码的任何其他部分。

2 个答案:

答案 0 :(得分:1)

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

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

def othermethod():
if isButtonClicked:
    callback()

但是你要确保变量是线程安全的。

答案 1 :(得分:1)

不是tkinter专家,但如果您想在点击按钮上获得一些文字输入,则以下内容可能会有效。

def callback():
    usein = entry.get()
    # do whatever with usein

master = Tk()
entry = Entry(master)  # the text input
Button(master, text='Button', command=callback)
相关问题