now = datetime.datetime.now().time() # 添加工作表按钮 for i, sheet_name in enumerate(self.sheet_names): # 枚举工作表列表中的每个工作表 if now >= datetime.time(8, 0, 0) and now <= datetime.time(19, 0, 0): if datetime.datetime.today().weekday() == 2: # 如果当前日期是星期3 # 添加一个按钮,按钮文本为工作表名称,点击按钮时调用self.show_sheet()方法显示相应的工作表 self.button = tk.Button(self.sheet_frame, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name)) self.button.grid(row=i, column=0, sticky="ew", padx=1, pady=1) else: # 如果当前日期不是星期3 if not sheet_name.startswith("設備-"): # 并且工作表名称不以"設備-"开头 # 则添加一个按钮,按钮文本为工作表名称,点击按钮时调用self.show_sheet()方法显示相应的工作表 self.button = tk.Button(self.sheet_frame, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name)) self.button.grid(row=i, column=0, sticky="ew", padx=1, pady=1) else: if not sheet_name.startswith("設備-"): # 并且工作表名称不以"設備-"开头 # 则添加一个按钮,按钮文本为工作表名称,点击按钮时调用self.show_sheet()方法显示相应的工作表 self.button = tk.Button(self.sheet_frame, text=sheet_name, command=lambda name=sheet_name: self.show_sheet(name)) self.button.grid(row=i, column=0, sticky="ew", padx=1, pady=1) # 添加一个标记,表示该按钮未被使用 self.button.used = False # 绑定鼠标进入事件 self.button.bind("<Enter>", lambda event, button=self.button: button.configure(bg="lightgray")) # 绑定鼠标离开事件 self.button.bind("<Leave>", lambda event, button=self.button: button.configure(bg="SystemButtonFace")) # 绑定按钮的点击事件 self.button.bind("<Button-1>", lambda event, button=self.button: self.mark_used(button))修改這段代碼,儅用戶選擇其中一個按鈕時,該按鈕的背景色改變,儅該按鈕中顯示的内容填寫完畢就上傳后又改變相應按鈕的顔色
时间: 2024-02-14 14:28:34 浏览: 85
要根据用户选择的按钮来改变其背景色,并在按钮显示的内容填写完毕后上传后再次改变相应按钮的颜色,你可以使用以下修改后的代码:
```python
import tkinter as tk
class YourApp:
def __init__(self):
self.root = tk.Tk()
self.buttons = []
self.button_selected = None
# 创建按钮并绑定事件处理函数
for i, sheet_name in enumerate(self.sheet_names):
button = tk.Button(self.sheet_frame, text=sheet_name, command=lambda name=sheet_name: self.button_clicked(name))
button.grid(row=i, column=0, sticky="ew", padx=1, pady=1)
self.buttons.append(button)
# 绑定鼠标进入事件
for button in self.buttons:
button.bind("<Enter>", lambda event, button=button: button.configure(bg="lightgray"))
# 绑定鼠标离开事件
for button in self.buttons:
button.bind("<Leave>", lambda event, button=button: button.configure(bg="SystemButtonFace"))
def button_clicked(self, name):
if self.button_selected is not None:
self.button_selected.configure(bg="SystemButtonFace") # 将之前选中的按钮颜色恢复为默认
self.button_selected = self.buttons[self.sheet_names.index(name)]
self.button_selected.configure(bg="green") # 将当前选中的按钮背景色设置为绿色
# 在此处添加逻辑以检查按钮显示的内容是否填写完毕并上传
def run(self):
self.root.mainloop()
# 创建应用对象并运行
app = YourApp()
app.run()
```
在这个例子中,我们通过为每个按钮添加了一个`button_clicked`事件处理函数来实现按钮的点击事件。当用户点击某个按钮时,该按钮的背景色会改变为绿色,并将之前选中的按钮的背景色恢复为默认(`SystemButtonFace`)。
请注意,我在代码中添加了一个`self.button_selected`变量来跟踪当前选中的按钮。这样,在用户选择另一个按钮时,我们可以将之前选中的按钮的背景色恢复为默认,然后将当前选中的按钮的背景色设置为绿色。
你需要根据实际情况,在适当的位置添加逻辑以检查按钮显示的内容是否填写完毕并上传,然后在上传后再次调用`button_clicked`函数,以改变相应按钮的颜色。
希望这个修改满足了你的需求。如果还有其他问题,请随时提问。
阅读全文