程序暂停,直到用户输入文本并按下按钮

时间:2015-02-06 20:14:02

标签: python tkinter

我想要一个按钮来更改某些小部件的文本。用户将按下change_text按钮,启动主要功能。然后程序将等到用户向Entry发送文本,然后按下Enter按钮。 target_widget将更改其文本,程序将继续。

这里有一些类似于我正在处理的代码:

from Tkinter import *

root = Tk()
root.grid()

CIN = StringVar(root)
COUT = StringVar(root)

entry = Entry(root, textvariable = CIN)
prompt = Label(root, textvariable = COUT)
target_widget = Label(root, text = '')
enter_button = Button(root, command = proceed)
change_text_button = Button(root, command = change_text)

def change_text():
    COUT.set("Enter text to entry")
    # Wait until user presses enter_button
    input_text = CIN.get()
    target_widget['text'] = input_text

def proceed():
    # continue program
    pass 

change_text_button.grid(row=0, column=0)
enter_button.grid(row=0, column=1)
target_widget(row=0, column=2)
prompt.grid(row=1, column=0)
entry.grid(row=1, column=1)

root.mainloop()

如果用户按下Enter

,我该如何让程序等待

1 个答案:

答案 0 :(得分:0)

您的代码的第一个问题是在您的小部件之后定义了change_textproceed函数,所以当解释器解析时,它不知道这些函数在哪里。只需在创建小部件之前将它们放入。

你遇到的第二个问题是你正在与网格target_widget绑在一起,但你实际上是在尝试使用相同名称调用一个不存在的函数:

target_widget(row=0, column=2)

将其更改为:

target_widget.grid(row=0, column=2)

您还可以为调用回调的Button使用一些文本。改变这个:

change_text_button = Button(root, command = change_text)

对此:

change_text_button = Button(root, text='Change Text Button', command = change_text)

更具启发性和可理解性。