如何在按钮中制作闪光灯[Tkinter库]

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

我有 2 个按钮 当我点击其中一个时,我希望另一个闪烁 10 秒 为什么它对我不起作用? tnx:)

def test (self):
    if self.my_button1.cget("bg") == "yellowgreen":
         t_end = time.time() + 10 * 1
         while time.time() < t_end:
         # This line doesn't work for me
            self.my_button12.configure(bg="red")
            time.sleep(1)
            self.my_button12.configure(bg="silver")
            time.sleep(1)
         pass

按钮应闪烁 10 秒

python tkinter button
1个回答
0
投票

您应该避免在 tkinter 应用程序中使用

sleep
,因为主 GUI 事件循环将在睡眠期间挂起,并且您的应用程序在此期间将无响应。相反,您应该使用内置的
after
方法在一段时间后调用函数。

另外,由于您在这里使用了

self
,我认为
test
是其他类中的一种方法 - 您应该[编辑]您的问题以包含该类的相关代码,因为它可能对其他人有帮助。最后,这里有一些缩进错误,所以您可能需要修复这些错误!

无论如何...就这样

# declare a variable in the instance scope to store the total blink count
self.blink_count = 0
# define a method to blink the button
def blink(self):
    if blink_count <= 10:
        self.blink_count += 1  # increment the counter
        self.my_button12.configure(bg="red")  # set the new background color
        # change the color again after 1 second
        self.after(1000, lambda: self.my_button12.configure(bg="silver"))
        self.after(1000, self.blink)  # call the blink function again after 1s to repeat
    else:
        self.my_button12.configure(bg="yellowgreen")  # restore the default bg color
        blink_count = 0  # reset the counter

这是一种相当幼稚的方法,因为使用计数器只允许您一次闪烁一个按钮(或者更准确地说,只要您闪烁的 first 按钮停止,所有闪烁的按钮都会停止,即

blink_count
达到 10) 但它应该给你一个开始的地方。

© www.soinside.com 2019 - 2024. All rights reserved.