# 添加工作表按钮 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=2, pady=2) 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))在這個代碼中添加顔色
时间: 2023-12-02 09:03:54 浏览: 105
如果您想要为按钮添加颜色,可以使用Button组件的bg属性和fg属性来设置背景色和前景色。下面是示例代码:
```
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), bg='blue', fg='white')
button.used = False
button.grid(row=i, column=0, sticky="ew", padx=2, pady=2)
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))
```
在这段代码中,我们在创建Button组件时,使用了bg和fg属性来设置背景色和前景色,将按钮的背景色设置为蓝色,前景色设置为白色。这样就可以为按钮添加颜色了。
相关问题
def load_excel(self, filename, menu_label, selected_label_text): self.la = menu_label self.workbook = xl.load_workbook(filename) self.sheet_names = sorted(self.workbook.sheetnames) # 按工作表名称从小到大排序 self.selected_label.config(text=selected_label_text) # 更新选中标签文本 # 清空左侧面板 for widget in self.sheet_frame.winfo_children(): widget.destroy() # 添加工作表按钮 for i, sheet_name in enumerate(self.sheet_names): button = tk.Button(self.sheet_frame, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name)) button.grid(row=i, column=0, sticky="ew", padx=1, pady=1)在這個代碼中添加一個將生成的按鈕在寫入這個面板中# 创建Frame来放置唯一值面板 unique_frame = tk.Frame(self.panel_right, bg='white') unique_frame.pack(side=tk.TOP, fill=tk.X, padx=5, pady=5),放置方式改爲橫著每5個一行,按鈕改爲文本,不帶其他功能
可以在添加工作表按钮的循环中,加入以下代码来实现按照行数5个一行,文本按钮的功能:
```
# 添加工作表按钮
for i, sheet_name in enumerate(self.sheet_names):
button = tk.Button(self.sheet_frame, text=sheet_name)
button.grid(row=i%5, column=i//5, sticky="ew", padx=1, pady=1)
```
这里使用了取模(%)和整除(//)操作来确定按钮的行和列。同时,每个按钮的 padx 和 pady 值可以根据需要进行调整。
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() # 添加工作表按钮 style = ttk.Style() style.configure('my.TButton', font=('Arial', 10)) style.map('my.TButton', background=[('active', '#007FFF')]) for i, sheet_name in enumerate(self.sheet_names): button = ttk.Button(self.panel_left, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name), style='my.TButton') button.used = False button.grid(row=i, column=0, sticky="ew", padx=2, pady=2) 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)) 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))報這個錯誤self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) _tkinter.TclError: unknown option "-relief"怎麽修改
你可以使用 `button.config(borderwidth=2)` 和 `button.config(relief="groove")` 来代替 `button.config(relief="sunken")` 和 `button.config(relief="raised")`。这样,当你鼠标进入按钮时,它的外观将会变化。修改后的代码如下:
```
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()
# 添加工作表按钮
style = ttk.Style()
style.configure('my.TButton', font=('Arial', 10))
style.map('my.TButton', background=[('active', '#007FFF')])
for i, sheet_name in enumerate(self.sheet_names):
button = ttk.Button(self.panel_left, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name),
style='my.TButton')
button.used = False
button.grid(row=i, column=0, sticky="ew", padx=2, pady=2)
button.config(borderwidth=2)
button.config(relief="groove")
def mark_used(button):
# 将按钮的标记设置为“已使用”
button.used = True
# 更改按钮的背景颜色
button.configure(bg="gray")
# 绑定按钮的点击事件
button.bind("<Button-1>", lambda event, button=button: mark_used(button))
button.bind("<Enter>", lambda event, button=button: button.config(relief="sunken"))
button.bind("<Leave>", lambda event, button=button: button.config(relief="raised"))
```
这样应该可以解决你的问题。
阅读全文