def 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 08:12:51 浏览: 71
Read data from the Excel spreadsheet.zip_Spreadsheet::Read_excel
好的,这是完整的代码,它会在生成按钮后为其添加鼠标进入和离开事件响应函数,保留点击后更改按钮背景颜色的功能。
```
def 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))
# 绑定鼠标进入事件
button.bind("<Enter>", lambda event, button=button: button.configure(bg="lightgray"))
# 绑定鼠标离开事件
button.bind("<Leave>", lambda event, button=button: button.configure(bg="SystemButtonFace"))
def mark_used(button):
if not button.used:
# 将按钮的标记设置为“已使用”
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))
```
阅读全文