Python Tkinter复选框用于修改现有列表字典值

时间:2015-12-30 23:05:40

标签: python list dictionary tkinter

我有一个字典列表,格式如下:

dict_list = [{'Contact Name' : 'Jeff Bezos', 'Email' : 'Jeff@Amazon.com', 'Send' : 0},
 {'Contact Name' : 'Bill Gates', 'Email' : 'Bill@Microsoft.com', 'Send' : 0}]

我目前使用Tkinter显示每个名字:

for eachclient in dict_list:
   contactLabel = Label(text='Contact Name: ' + eachclient['Contact Name'])     
   emailLabel = Label(text='Contact Email: ' + eachclient['Email'])

我需要一个Tkinter复选框,可以修改'发送'对于dict_list中的每个条目 我还将添加一个发送按钮,仅在选中该复选框时才会发送 (发送按钮将调用像:)这样的命令。

   def buttonCheck():
       for eachclient in dict_list:
           if eachclient 'Send' = 1:
              send the message
           else:
              skip this client 

这可能吗?我非常感谢能得到的任何帮助!

1 个答案:

答案 0 :(得分:0)

复选框本身可以是for循环的一部分,最后是:

checkbox = Button(text=str(check), command=checkemail, width=2)
# The str(check) part is for rows.

N.B。按钮本身必须在网格中,类似于此。

enter image description here

使用cget方法(请参阅this获取解释,并参阅this获取示例),该复选框的功能可能如下所示:

def checkemail(): # Using an example function name
    x = int(checkbox.cget("text")) # Gets the row number (check)
    dict_list[x]['Send'] = 1 # Changes the value of 'Send' for the contact to 1

我希望这有用!