ef load_excel(self, filename,menu_label): self.la=menu_label self.workbook = xl.load_workbook(filename) self.sheet_names = self.workbook.sheetnames # 清空左侧面板 for widget in self.panel_left.winfo_children(): widget.destroy() # 添加工作表按钮 for i, sheet_name in enumerate(self.sheet_names): button = tk.Button(self.panel_left, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name)) # 添加一个标记,表示该按钮未被使用 button.used = False button.grid(row=i, column=0, sticky="ew", padx=1, pady=1) # 绑定按钮的点击事件 button.bind("<Button-1>", lambda event, button=button: mark_used(button)) def mark_used(button): # 将按钮的标记设置为“已使用” button.used = True # 更改按钮的背景颜色 button.configure(bg="gray") for child in self.panel_left.winfo_children(): # 绑定按钮的点击事件 child.bind("<Button-1>", lambda event, button=child: mark_used(button))在這段代碼中添加在用戶移動鼠標到按鈕上時按鈕有視覺感應
时间: 2024-02-09 14:10:53 浏览: 73
如果您想让按钮在鼠标移动到上面时产生视觉感应,可以使用Tkinter内置的Button组件的relief属性,将按钮的样式设置为“raised”或者“sunken”,然后使用bind方法绑定鼠标事件,当鼠标移动到按钮上时,改变按钮的relief属性,使其产生视觉感应。下面是示例代码:
```
for i, sheet_name in enumerate(self.sheet_names):
button = tk.Button(self.panel_left, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name))
button.used = False
button.grid(row=i, column=0, sticky="ew", padx=1, pady=1)
button.bind("<Enter>", lambda event, button=button: button.config(relief="sunken"))
button.bind("<Leave>", lambda event, button=button: button.config(relief="raised"))
button.bind("<Button-1>", lambda event, button=button: mark_used(button))
```
在这段代码中,我们使用bind方法绑定了三个事件,分别是鼠标进入按钮区域、鼠标离开按钮区域和鼠标左键点击按钮。当鼠标进入按钮区域时,将按钮的relief属性设置为“sunken”,使其呈现凹陷的效果;当鼠标离开按钮区域时,将按钮的relief属性设置为“raised”,使其恢复原来的样式。这样就实现了按钮在鼠标移动到上面时产生视觉感应的效果。
阅读全文