Как вы используете tkinter для отображения результатов вызова функции? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь использовать tkinter для демонстрации функциональности данной библиотеки Python.Графический интерфейс пользователя должен принимать текстовый ввод от пользователя, ждать нажатия кнопки, отправлять ввод функции, отображать результат и повторять этот процесс каждый раз, когда пользователь нажимает кнопку.

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 голосов
/ 26 марта 2019

Предположим, что вы хотите установить текст последней метки на основе значения ввода 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...