我有一个按钮,我想在单击它时更改它,然后在运行代码后它会变回默认颜色。我可以使用以下代码让它改变颜色。由于我还没有步进电机,所以我无法运行代码让它移动,所以我只是使用 time.sleep 来模拟它。
按下按钮之前
按下按钮后
到目前为止一切顺利。现在,如果我取消注释 time.sleep 行,颜色不会改变,直到睡眠完成,不知道为什么。
如果我取消注释
self.button_11.configure(fg_color=['#3B8ED0','#1F6AA5'])
行,无论 sleep 命令是否被注释掉,颜色都不会变为红色。
我期待以下内容:
我不知道为什么第二种颜色立即覆盖红色。
有什么想法吗?
# Test the feeder
def feed_testing(self):
global feed_steps
print(self.button_11.cget("fg_color"))
self.button_11.configure(fg_color="Red")
print(self.button_11.cget("fg_color"))
# time.sleep(5)
# self.button_11.configure(fg_color=['#3B8ED0','#1F6AA5'])
# print(self.button_11.cget("fg_color"))
更新: 我刚刚将代码更改为
def feed_testing(self):
global feed_steps
print(self.button_11.cget("fg_color"))
self.button_11.configure(fg_color="Red")
print(self.button_11.cget("fg_color"))
self.button_11.update_idletasks()
time.sleep(5)
# self.button_11.configure(fg_color=['#3B8ED0','#1F6AA5'])
self.button_11.configure(fg_color='#3B8ED0')
print(self.button_11.cget("fg_color"))
如 Jasonharper 所描述。现在,在
time.sleep(5)
之后,按钮呈红色闪烁一微秒,刚好足以看到它闪烁。
好吧,明白了。我使用了
self.button_11.after(1, self.update())
它完全按照需要工作。
这是修改后的代码,可以运行。感谢所有回答的人,特别是杰森哈珀。 :)
# Test the feeder
def feed_testing(self):
global feed_steps
print(self.button_11.cget("fg_color"))
self.button_11.configure(fg_color="Red")
self.button_11.after(1, self.update())
print(self.button_11.cget("fg_color"))
time.sleep(5)
self.button_11.configure(fg_color=['#3B8ED0','#1F6AA5'])
print(self.button_11.cget("fg_color"))