【问题标题】:Program halts until the user enters text and presses Button程序暂停,直到用户输入文本并按下按钮
【发布时间】:2015-02-06 20:14:02
【问题描述】:

我想要一个按钮来更改某些小部件的文本。用户将按下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

【问题讨论】:

  • 你忘了问问题。

标签: python tkinter


【解决方案1】:

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

您遇到的第二个问题是您绑定到网格target_widget,但您实际上是在尝试调用一个不存在的同名函数:

target_widget(row=0, column=2)

改成:

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

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

change_text_button = Button(root, command = change_text)

到这里:

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

哪个更有启发性和可理解性。

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多