python - Tkinter - 从元组列表生成复选框
问题描述
给定一个元组列表,我需要为每个元组创建一个复选框,并为其分配一个变量。我的问题是元组列表是可变长度的,我无法弄清楚如何在tkinter
.
例如,我的原始元组列表是:
[('GigabitEthernet0/0/0', '1.1.1.1'), ('GigabitEthernet0/0/1', '2.2.2.2'),
('GigabitEthernet0/0/2', '3.3.3.3'), ('Loopback0', '4.4.4.4')]
这是我拥有的代码的一部分。它不完整,但您可以看到我正在使用的内容。本节获取我需要使用的信息,并且只是将其显示为复选框。
output = net_connect.send_command('show ip int brief')
regex_active_interfaces = re.compile(r'(\S+)(?:\s+|\t+)(\d+.\d+.\d+.\d+)\s')
active_interfaces = regex_active_interfaces.findall(output)
for i in active_interfaces:
ipEntryText = Checkbutton(debuggerWindow, text=i)
ipEntryText.pack()
我需要为其中的每一个设置一个复选框,然后可以通过命令引用该复选框以确定选择了这些接口中的哪一个。
解决方案
您可以简单地使用字典来保存如下变量:
cbvars = {}
for i in active_interfaces:
var = StringVar(value=0)
btn = Checkbutton(debuggerWindow, text=i, variable=var, anchor='w')
btn.pack(fill='x')
cbvars[i] = var
然后你可以使用字典来检查哪个checkbutton被选中:
for interface, var in cbvars.items():
print(interface, var.get())