【发布时间】:2018-05-05 23:28:06
【问题描述】:
我正在尝试使用 Tkinter 编写一个小型 GUI 程序。我想要做的是创建一个带有按钮和输入的窗口,它工作得很好。但是,我希望按钮运行一些函数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() 不起作用或者我使用错了,有什么办法可以解决我的问题吗?
【问题讨论】:
标签: python python-3.x tkinter