使用customtkinter将Python按钮颜色更改为红色然后返回原始值会发生意想不到的事情

问题描述 投票:0回答:1

我有一个按钮,我想在单击它时更改它,然后在运行代码后它会变回默认颜色。我可以使用以下代码让它改变颜色。由于我还没有步进电机,所以我无法运行代码让它移动,所以我只是使用 time.sleep 来模拟它。

按下按钮之前

按下按钮后

到目前为止一切顺利。现在,如果我取消注释 time.sleep 行,颜色不会改变,直到睡眠完成,不知道为什么。

如果我取消注释

self.button_11.configure(fg_color=['#3B8ED0','#1F6AA5'])
行,无论 sleep 命令是否被注释掉,颜色都不会变为红色。

我期待以下内容:

  1. 按钮 fg_color = 单击前呈蓝色
  2. 单击按钮时按钮颜色变为红色
  3. 5秒过去了
  4. 按钮恢复正常的 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)
之后,按钮呈红色闪烁一微秒,刚好足以看到它闪烁。

python button pycharm customtkinter
1个回答
0
投票

好吧,明白了。我使用了

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"))
© www.soinside.com 2019 - 2024. All rights reserved.