Обратите внимание, что вы вызываете функцию input
перед вызовом Tk
. Вот почему ваш код запрашивает ввод перед тем, как отобразить окно.
Но есть кое-что более базовое c, которое необходимо изменить.
Когда вы используете 'Tk', он будет обрабатывать ввод вид, для которого вы используете input
. (Вам это вообще не понадобится.)
Я бы порекомендовал вам следовать руководству по https://tkdocs.com/tutorial/. На нескольких экранах урока вы сможете сделать то, что вы хотите.
Удачи!
Приложение:
Возьмите код Python из урока страница в https://tkdocs.com/tutorial/firstexample.html в качестве отправной точки. (Использование рабочего примера в качестве исходного места часто является хорошей стратегией.)
Просто замените идентификаторы и строки символьными строками, которые имеют смысл в вашем контексте. Затем замените код, который выполняет фактический расчет, на нужный вам расчет. Вот упрощенный код для вашей ситуации.
Обратите особое внимание на то, что вы используете .get
в Tk для получения содержимого поля и .set
для помещения чего-либо на дисплей.
from tkinter import *
from tkinter import ttk
from difflib import get_close_matches
data = {'Bob':'23', 'Sahil':'17', 'Swami':'34', 'Vaibhav':'21'}
def Find(*args):
try:
value = word.get().lower().title()
result.set(data[value])
except ValueError:
pass
root = Tk()
root.title("Example for Sahil")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
word = StringVar()
result = StringVar()
word_entry = ttk.Entry(mainframe, width=7, textvariable=word)
word_entry.grid(column=2, row=1, sticky=(W, E))
ttk.Label(mainframe, textvariable=result).grid(column=2, row=2, sticky=(W, E))
ttk.Button(mainframe, text="Find", command=Find).grid(column=3, row=3, sticky=W)
ttk.Label(mainframe, text="word").grid(column=3, row=1, sticky=W)
ttk.Label(mainframe, text="is equivalent to").grid(column=1, row=2, sticky=E)
ttk.Label(mainframe, text="result").grid(column=3, row=2, sticky=W)
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
word_entry.focus()
root.bind('<Return>', Find)
root.mainloop()