我想要一个按钮来更改某些小部件的文本。用户将按下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
?
答案 0 :(得分:0)
您的代码的第一个问题是在您的小部件之后定义了change_text
和proceed
函数,所以当解释器解析时,它不知道这些函数在哪里。只需在创建小部件之前将它们放入。
你遇到的第二个问题是你正在与网格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)
更具启发性和可理解性。