import tkinter as tk from tkinter import ttk root = tk.Tk() def on_select(event): selected_items = [value.get() for value in values] for select in selected_items: print(select) # 创建一个 ttk.Combobox 控件 Button4 = tk.Button(root, text="退出", command=on_select) Button4.pack(side="left") # 创建多个 Checkbutton 控件 values = ['序号', '姓名', '学号', '爱好'] for item in values: var = tk.StringVar() chk = ttk.Checkbutton(root, text=item, variable=var) chk.pack() values.append(var) # 绑定 "<<ComboboxSelected>>" 事件到 on_select 函数 root.geometry("300x300") root.mainloop()这个程序为什么不生成窗口
时间: 2024-02-29 13:51:53 浏览: 325
tcl.rar_.tcl_tcl_tcl tk_tcl/tk_tcl_tk
这个程序没有生成窗口的原因是因为在创建多个 Checkbutton 控件时,将变量 var 与每个 Checkbutton 绑定,但是却将这些变量添加到了 values 列表中,导致 values 列表中的元素类型不统一,从而导致程序出错。可以将 values 列表改为一个空列表,将 var 变量直接添加到一个新的列表中即可。同时,将 Button4 和 values 的添加操作放在创建 Checkbutton 控件的 for 循环之前,即可正确生成窗口。修改后的程序如下:
```python
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def on_select(event):
selected_items = [value.get() for value in values]
for select in selected_items:
print(select)
# 创建一个 ttk.Combobox 控件
Button4 = tk.Button(root, text="退出", command=on_select)
Button4.pack(side="left")
# 创建多个 Checkbutton 控件
var_list = []
values = []
for item in ['序号', '姓名', '学号', '爱好']:
var = tk.StringVar()
chk = ttk.Checkbutton(root, text=item, variable=var)
chk.pack()
var_list.append(var)
# 将 Checkbutton 绑定的变量添加到 values 列表中
for var in var_list:
values.append(var.get())
# 绑定 "<<ComboboxSelected>>" 事件到 on_select 函数
root.geometry("300x300")
root.mainloop()
```
阅读全文