pycharm 使用customtkinter将Python按钮的颜色更改为红色,然后再返回到原始值,会出现意想不到的情况

hk8txs48  于 8个月前  发布在  PyCharm
关注(0)|答案(1)|浏览(64)

我有一个按钮,我想改变当它被点击,然后在代码运行后,它改变回默认的颜色。我可以用下面的代码让它改变颜色。由于我还没有步进电机,我不能运行代码让它移动,所以我只是使用time.sleep来模拟它。
在按下按钮之前

按下按钮后

到目前为止还不错。现在,如果我取消注解time.sleep行,颜色不会改变,直到睡眠完成,不知道为什么。
如果我取消注解self.button_11.configure(fg_color=['#3B8ED0','#1F6AA5'])行,不管sleep命令是否被注解掉,颜色都不会变成红色。
我期待以下内容:
1.按钮fg_color =单击前带蓝色
1.单击按钮时,按钮颜色变为红色

  1. 5秒通过
    1.按钮返回到正常的fg_color
    我不知道为什么第二种颜色会立即覆盖红色。
    有什么想法吗?
#   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)之后,按钮 Flink 红色一微秒,刚好足够长的时间看到它 Flink 。

ttp71kqs

ttp71kqs1#

好吧,我知道了。我使用self.button_11.after(1, self.update())它完全按照需要工作。
下面是修改后的代码。感谢所有回答的人,特别是jasonharper。:)

#   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"))

相关问题