【发布时间】:2022-01-06 15:21:58
【问题描述】:
我有一个 tk.Text() 小部件和一个按钮。单击按钮时,我想更改 Text 小部件中的文本,然后进行冗长的工作。这是按钮命令函数的代码 sn-p:
price_text.delete("1.0", tk.END)
price_text.insert(tk.END, 'PLEASE WAIT..')
result = self.the_lengthy_job()
但是,“请稍候..”消息在 self.the_length_job() 返回之前不会显示。是否可以在 the_length_job() 开始之前显示它?
---编辑--- 这是更多代码:
import tkinter as tk
import pandas_datareader as web
class GUI:
def __init__(self):
self.root = tk.Tk()
self.root.geometry("800x480")
self.price_text = tk.Text(self.root)
self.price_text.grid(row=0, column=0, )
tk.Button(self.root, text="Get", command=self.do_get).grid(row=1, column=0)
self.root.mainloop()
def do_get(self):
self.price_text.delete("1.0", tk.END)
self.price_text.insert(tk.END, "PLEASE WAIT..")
result = self.lengthy_job()
def lengthy_job(self):
tickers = ["GOOG", "AAPL", "MSFT", "IBM", "F", "AMZN", "NVDA", "NFLX", "DISH", "BABA", "JD", "SHOP", "PDD", "CSCO", "AMD", "INTC", "TXN", "MU", "QCOM"]
return web.DataReader(tickers, 'yahoo', start="2020-1-1", end="2020-1-31")
GUI()
在本例中,“PLEASE WAIT..”仅在 longy_job() 完成后显示。
【问题讨论】:
-
请向我们展示更多代码
-
您需要在将文本插入文本小部件后立即调用
self.root.update()。 -
@SylvesterKruin 感谢您的建议。还注意到
self.price_text.update()可以做同样的工作。如果你把它放在答案中,我会接受它。 -
请不要从您的问题中删除完整的代码;理解问题很重要。