dragov 发表于 2025-8-22 15:36:15

Tkinter bind 错误



from tkinter import *
root=Tk()
def m(event):
   b.config(background="lime")
def n(event):
   b.config(background="orchid")
b=Button(root,text="近期大暴雨").pack()
b.bind("<Enter>",m)
b.bind("<Leave>",n)
mainloop()

如何绑定啊?

FishC 发表于 2025-8-22 15:36:51

你好!看起来你在使用 Tkinter 绑定事件时遇到了问题。主要问题有两个:

1. 你的事件绑定字符串是空的,应该指定具体的事件(比如鼠标进入或离开按钮)。
2. 使用 b=Button(...).pack() 会导致 b 被赋值为 None,因为 pack() 方法返回的是 None。这会导致后续的绑定操作失效。

以下是修正后的代码:


from tkinter import *

root = Tk()

def m(event):
    b.config(background="lime")
def n(event):
    b.config(background="orchid")

b = Button(root, text="近期大暴雨")
b.pack()
b.bind("<Enter>", m)   # 鼠标进入按钮时触发
b.bind("<Leave>", n)   # 鼠标离开按钮时触发

mainloop()


主要修改点:
- 将 b=Button(...).pack() 拆分为两行,先创建按钮再布局。
- 为 bind 方法指定了具体的事件:<Enter>(鼠标进入)和 <Leave>(鼠标离开)。

这样修改后,当鼠标移动到按钮上时,按钮背景会变为绿色(lime);当鼠标离开时,会变为紫色(orchid)。希望这对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

某一个“天” 发表于 2025-8-23 09:30:53


from tkinter import *

root = Tk()

def m(event):
    b.config(background="lime")
def n(event):
    b.config(background="orchid")

b = Button(root, text="近期大暴雨")
b.pack()
b.bind("<Enter>", m)   # 鼠标进入按钮时触发
b.bind("<Leave>", n)   # 鼠标离开按钮时触发

mainloop()

某一个“天” 发表于 2025-8-23 09:49:42

谢谢你{:10_256:}
另外提醒一个以后一定会遇到的问题,bind传参要用lambda ,可以上网详细了解

dragov 发表于 2025-8-23 10:16:15

某一个“天” 发表于 2025-8-23 09:49
谢谢你
另外提醒一个以后一定会遇到的问题,bind传参要用lambda ,可以上网详细了解



好哒,谢谢

尉尉的可乐 发表于 2025-8-23 10:49:33

某一个“天” 发表于 2025-8-23 09:49
谢谢你
另外提醒一个以后一定会遇到的问题,bind传参要用lambda ,可以上网详细了解

**
页: [1]
查看完整版本: Tkinter bind 错误