for i, option in enumerate(options_button): tk.Button(root,text=option,command=button_clicked).grid(row=i,column=2)如何将上述代码每个按钮点击事件触法不同函数
时间: 2024-10-07 07:01:48 浏览: 13
这段代码创建了一个`for`循环,用于在Tkinter GUI环境中生成一系列的Button(按钮),每个按钮的文字取自`options_button`列表中的元素,并设置了点击后的命令(command)为`button_clicked`函数。如果你想要给每个按钮绑定不同的函数,你可以稍微修改这个循环结构:
```python
# 假设你有一个函数列表,对应于options_button中的每个选项
functions = [func1, func2, func3] # 这里func1, func2, func3是你要绑定的不同函数
for i, (option, function) in enumerate(zip(options_button, functions)):
def button_command(i=i, function=function): # 使用局部作用域保存索引和函数引用
function()
tk.Button(root, text=option, command=button_command).grid(row=i, column=2)
```
现在,当你点击每个按钮时,会执行相应列表中的函数,因为`button_command`内部函数绑定了对应的`function`。
相关问题
# 添加工作表按钮 for i, sheet_name in enumerate(self.sheet_names): if datetime.datetime.today().weekday() == 3: if "設備-" not in sheet_name: 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) else: if not sheet_name.startswith("設備-"): 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)這段代碼什麽意思
这段代码是在一个 Tkinter 程序中为工作表添加按钮。程序通过枚举工作表列表中的每个工作表,然后根据当前日期来确定是否应该添加该工作表的按钮。如果当前日期是星期四,则添加按钮,否则检查工作表名称是否以“設備-”开头,如果不是,则添加按钮。每个按钮都将调用 `self.show_sheet()` 方法来显示相应的工作表。
from PIL import Image import tkinter as tk def show_results(results): # 创建子界面 win = tk.Toplevel() win.geometry("400x400") win.title("子界面") # 创建表格 table = tk.Frame(win) table.pack() # 创建表头 tk.Label(table, text="X").grid(row=0, column=0) tk.Label(table, text="Y").grid(row=0, column=1) tk.Label(table, text="W").grid(row=0, column=2) tk.Label(table, text="H").grid(row=0, column=3) tk.Label(table, text="类别").grid(row=0, column=4) # 创建表格内容 for i, s1 in enumerate(results): tk.Label(table, text=s1[0]).grid(row=i + 1, column=0) tk.Label(table, text=s1[1]).grid(row=i + 1, column=1) tk.Label(table, text=s1[2]).grid(row=i + 1, column=2) tk.Label(table, text=s1[3]).grid(row=i + 1, column=3) tk.Label(table, text=s1[4]).grid(row=i + 1, column=4) # 创建选择按钮 select_button = tk.Button(table, text="选择", command=lambda s=s1: select_result(s)) select_button.grid(row=i + 1, column=5) # 定义选择结果函数 def select_result(result): print("选择的是:", result) def site(source, pred, names): img = Image.open(source) x1, x2 = img.size print([x1, x2]) results = [] for i1 in pred: s = [] for i2 in i1.data.cpu().numpy(): s1 = [] s = list(i2) # 获取预测框中心点的坐标 x = s[0] = float(round((s[0] + s[2]) / 2 / x1, 4)) y = s[1] = float(round((s[1] + s[3]) / 2 / x2, 4)) # 预测框的宽和高 w = s[2] - s[0] h = s[3] - s[1] s1.append(str(x)) s1.append(str(y)) s1.append(str(w)) s1.append(str(h)) s1.append(names[int(s[5])]) if s[4] < 0.5: break results.append(s1) # 创建GUI界面 window = tk.Tk() window.geometry("400x400") # 创建按钮 for name in set([r[4] for r in results]): tk.Label(window, text=name).pack() button = tk.Button(window, text="显示" + name + " 的结果", command=lambda name=name: show_results([r[:4]+[name] for r in results if r[4] == name])) button.pack() # 创建确定按钮 confirm_button = tk.Button(window, text="退出", command=window.quit) confirm_button.pack() window.mainloop()
这段代码是一个目标检测模型的GUI界面,可以显示检测结果并选择特定类别的检测结果进行查看。其中的函数 `site` 接收模型的预测结果,将其转化为可视化的框,并将不同类别的框分别通过按钮进行显示。函数 `show_results` 则是创建子界面用于显示检测结果的表格,每个结果都包括目标框的位置和大小,以及所属类别,并且可以选择不同的结果进行查看。
阅读全文