Я пытаюсь написать небольшую программу с графическим интерфейсом, используя Tkinter. То, что я пытаюсь сделать, это создать окно с кнопкой и вводом, который работает просто отлично. Тем не менее, я хочу, чтобы кнопка запускала определенную функцию func()
, которая обновляет окно tkinter, и только после того, как это будет сделано, запустите все, что будет дальше:
import tkinter as tk
import time
def func():
widgets = root.grid_slaves()
for widget in widgets:
if int(widget.grid_info()['row']) != 0:
widget.destroy()
startPrompt.configure(text = "Updated Text")
startPrompt.update_idletasks()
# root.update_idletasks() -- I have tried both and neither work
# Just an example of something running, to verify that the loop executes
# before tkinter window gets updated
for i in range(10):
print(i)
time.sleep(0.5)
font = ("Helvetica",20)
root = tk.Tk()
startPrompt = tk.Label(root, text="Starting Prompt", font = font)
inputPrompt = tk.Label(root, text="Input Prompt",font = font)
root.textEntry = tk.Entry(root, width=50)
submitButton = tk.Button(root, text="Enter", command = func, width = 20,pady = 10,font = font)
startPrompt.grid(row = 0,columnspan = 2,padx = 10, pady = 10)
inputPrompt.grid(row = 1, padx = 10, pady = 10)
root.textEntry.grid(row = 1, column = 1, padx = 10)
submitButton.grid(row = 2, columnspan = 2)
root.mainloop()
У меня проблема в том, что независимо от того, что я пытаюсь, это не работает. Я пытался использовать after()
, но из-за того, что моя программа написана, очень сложно переписать все так, чтобы это работало правильно. Я пытался использовать update_idletasks()
, но это тоже не сработало.
Кто-нибудь знает, почему update_idletasks()
не работает или я его неправильно использую, и есть ли способ решить мою проблему?