我有 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 秒
您应该避免在 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) 但它应该给你一个开始的地方。