Как вернуть вывод напрямую, не создавая кнопку в Tkinter - PullRequest
0 голосов
/ 01 марта 2020

Добрый вечер, я изо всех сил пытаюсь вернуть результат без создания кнопки в Tkinker. Я хочу вернуть либо «Отлично», либо «Готово» на основе ввода, но отображается только вход.

Ниже приведен код, с которым я бьюсь

from tkinter import *

root = Tk()

num = StringVar()
entry1 = Entry(root, textvariable=num).pack()

remark = StringVar()
entry2 = Entry(root, textvariable=remark).pack()

def set_label(name, index, mode):
    return remark.set(num.get())
    if result > 56:
        return "Excellent"
    else:
        return "Done"

num.trace('w', set_label)
num.set('')

root.mainloop

1 Ответ

0 голосов
/ 01 марта 2020

Я не был точно уверен, что вы хотите сделать, но я изменил вашу функцию, чтобы определить, является ли num entry ''. Если нет, тогда преобразуйте значение, извлеченное в int, и сравните с 56. Если больше, вставьте запись «Отлично» в запись примечания, в противном случае добавьте «Готово» в запись примечания.

По мере ввода каждого di git, будет выполнено сравнение с 56, поэтому первое di git всегда будет приводить к появлению «Done». Как только вы превысите 56 (для этого потребуется минимум 2 цифры), он останется «отличным».

Опять же, я сделал все, что мог, с предоставленной логикой c. Вот полный код:

from tkinter import *

root = Tk()

num = StringVar()
entry1 = Entry(root, textvariable=num).pack()

remark = StringVar()
entry2 = Entry(root, textvariable=remark).pack()

def set_label(name, index, mode):
    result = num.get()
    if result == '':
        pass # not sure what rule should be here
    else:
        result = int(result)
        if result > 56:
            remark.set("Excellent")
        else:
            remark.set("Done")

num.trace('w', set_label)
num.set('')

root.mainloop
...