您如何使用tkinter来显示函数调用的输出?

时间:2019-03-25 17:46:37

标签: python user-interface tkinter

我正在尝试使用tkinter来演示给定python库的功能。 GUI必须从用户处获取文本输入,等待按钮按下,然后将输入发送给函数,显示结果,并在用户每次按下按钮时重复此过程。

import tkinter as tk


def do_something(phrase):
    return phrase + phrase


def main():
    root = tk.Tk()
    root.title("Demo")

    tk.Label(root, text="Please enter a sentence: ").grid(row=0)
    user_input = tk.Entry(root)
    user_input.grid(row=0, column=1)
    result = tk.Button(root, text='Do something', command=do_something(user_input.get())).grid(row=1, column=1, sticky=tk.W, pady=4)
    tk.Label(root, text=result).grid(row=2, column=1)

    root.mainloop()


if __name__ == "__main__":
    main()

我不知道如何访问do_something()返回的值。我想像一下,一旦我了解如何做到这一点,就可能存在确保在窗口保持打开状态并且用户按下按钮时可以重复执行该过程多次的问题。

1 个答案:

答案 0 :(得分:0)

猜测您要基于user_input的输入值设置最后一个标签的文本。您可以按照以下步骤进行操作:

import tkinter as tk

def do_something(phrase):
    return phrase + phrase

def main():
    root = tk.Tk()
    root.title("Demo")

    tk.Label(root, text="Please enter a sentence: ").grid(row=0)
    user_input = tk.Entry(root)
    user_input.grid(row=0, column=1)
    result = tk.Label(root, text='')
    result.grid(row=2, column=0, columnspan=2)
    btn = tk.Button(root, text='Do something')
    btn.config(command=lambda: result.config(text=do_something(user_input.get())))
    btn.grid(row=1, column=1, sticky=tk.W, pady=4)

    root.mainloop()

if __name__ == "__main__":
    main()