首页 > 解决方案 > 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()

我需要为其中的每一个设置一个复选框,然后可以通过命令引用该复选框以确定选择了这些接口中的哪一个。

标签: pythontkinter

解决方案


您可以简单地使用字典来保存如下变量:

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())

推荐阅读