将鼠标悬停在一个窗口中的按钮上会显示在另一个窗口中 - Tkinter



我打算创建两个带有两个独立按钮的独立窗口。如果将鼠标悬停在一个按钮上,该按钮会改变颜色。如果将鼠标悬停在另一个按钮上,该按钮会改变颜色。

但是,我得到的是,当我将鼠标悬停在第一个生成的按钮上时,它会改变第二个按钮的颜色。但是,第二个按钮的行为符合预期。无论哪种方式,只有第二个按钮显示任何更改。

如何停止这种奇怪的跨窗互?

from tkinter import *
root = Tk()
class Player:
def __init__(self, playerName, window):
self.window = window
self.window.title(playerName)
def hover_in(self, num):
if self.button["bg"] == "lightblue":
self.button["bg"] = "white"
def hover_out(self, num):
if self.button["bg"] == "white":
self.button["bg"] = "lightblue"
def create(self):
Player.button = Button(self.window, text="Hover", bg="lightblue", width=40)
Player.button.grid()
i=10
Player.button.bind("<Enter>", lambda event, num=i: Player.hover_in(self, num))
Player.button.bind("<Leave>", lambda event, num=i: Player.hover_out(self, num))
b1 = Toplevel()
b2 = Toplevel()
p1 = Player("Player 1", b1)
p1.create()
p2 = Player("Player 2", b2)
p2.create()
root.withdraw()
root.mainloop()

编辑:更有意义的次要代码更改

编辑 2:重新引入了 num 变量,这是我原始代码的一部分

编辑3:撤消所有编辑,因为正在生成错误

将 Player.button 更改为 self.button 解决了这个问题。谢谢@ewong

最新更新