Python Tkinter-对复选框进行排序并打印(如果有)';重新点击

Python Tkinter-对复选框进行排序并打印(如果有)';重新点击,python,python-2.7,checkbox,tkinter,Python,Python 2.7,Checkbox,Tkinter,我正在学习Tkinter,有两个问题 [在评论部分回答的第一个问题] 1-为什么字典中的项目没有按正确的顺序打印? 如果从按钮中删除“网格”部分,您可能会看到它们没有订购 2-为什么按钮未显示?我想在复选框下面做一个按钮,它会为每个点击的复选框打印“1” 这是我的推荐信 下面是我的代码: from Tkinter import * master = Tk() def read(): print dict[mini].get() dict = {"first": 0, "second

我正在学习Tkinter,有两个问题

[在评论部分回答的第一个问题]

1-为什么字典中的项目没有按正确的顺序打印? 如果从按钮中删除“网格”部分,您可能会看到它们没有订购

2-为什么按钮未显示?我想在复选框下面做一个按钮,它会为每个点击的复选框打印“1”

这是我的推荐信

下面是我的代码:

from Tkinter import *

master = Tk()

def read():
    print dict[mini].get()

dict = {"first": 0, "second": 0, "third": 0}


for mini in dict:
    dict[mini] = Variable()
    l = Checkbutton(master, text=mini, variable=dict[mini])
    l.grid(sticky=W, pady=4)
    l.pack()

Button(master, text='Show', command=read).grid(row=len(dict) + 1, sticky=W, pady=4)

master.mainloop()

编辑:拼写按钮不显示,因为程序在
pack
语句中出错。卸下
pack()
,按钮显示。您不能将
网格
包装
混合在同一个容器中。(根据柯利乔在评论中所说的)

my_dict
中声明的
Tkinter
变量未初始化或赋值,因此无法使用;变量()s的字典从未更改

from Tkinter import *
from collections import OrderedDict

master = Tk()

def read():
    try:
        print my_dict[mini]
    except KeyError:
        pass

my_dict = OrderedDict()
my_dict["first"] = 0
my_dict["second"] = 0
my_dict["third"] = 0


for mini in my_dict.keys():
    my_dict[mini] = Variable()
    chkbtn = Checkbutton(master, text=mini, variable=my_dict[mini])
    chkbtn.grid(sticky=W, pady=4)

Button(master, text='Show', command=read).grid(row=len(my_dict) + 1, sticky=W, pady=4)

master.mainloop()

最后,不要使用
i
l
o
作为单字符变量名,因为很难区分哪个是字母,哪个是数字;也不要将
内置项的名称
用于
变量
方法
名称。

由于程序在
pack
语句中出错,因此按钮不会显示。卸下
pack()
,按钮显示。您不能将
网格
包装
混合在同一个容器中。(根据柯利乔在评论中所说的)

my_dict
中声明的
Tkinter
变量未初始化或赋值,因此无法使用;变量()s的字典从未更改

from Tkinter import *
from collections import OrderedDict

master = Tk()

def read():
    try:
        print my_dict[mini]
    except KeyError:
        pass

my_dict = OrderedDict()
my_dict["first"] = 0
my_dict["second"] = 0
my_dict["third"] = 0


for mini in my_dict.keys():
    my_dict[mini] = Variable()
    chkbtn = Checkbutton(master, text=mini, variable=my_dict[mini])
    chkbtn.grid(sticky=W, pady=4)

Button(master, text='Show', command=read).grid(row=len(my_dict) + 1, sticky=W, pady=4)

master.mainloop()

最后,不要使用
i
l
o
作为单字符变量名,因为很难区分哪个是字母,哪个是数字;另外,不要将
内置名
用于
变量
方法
名称。

字典不按顺序排列。你可能想看看。我不知道,谢谢你的帮助。然而,我似乎无法让它工作。我做错了什么?如果将字典传递给它,字典将是无序的,
OrderedDict
将不知道原始顺序是什么。您应该使用
OrderedDict([('first',0),('second',0)])
。该按钮不会显示,因为程序在pack语句中出错。卸下包装(),按钮显示。不能在同一容器中混合使用网格和包装。另外,名为Variable()的函数尚未声明,因此这可能是您的下一个错误,并且Variable()的字典从未更改。最后,不要使用“i”、“l”或“o”作为单字符变量名,因为很难区分哪个是字母,哪个是数字。字典不按顺序排列。你可能想看看。我不知道,谢谢你的帮助。然而,我似乎无法让它工作。我做错了什么?如果将字典传递给它,字典将是无序的,
OrderedDict
将不知道原始顺序是什么。您应该使用
OrderedDict([('first',0),('second',0)])
。该按钮不会显示,因为程序在pack语句中出错。卸下包装(),按钮显示。不能在同一容器中混合使用网格和包装。另外,名为Variable()的函数尚未声明,因此这可能是您的下一个错误,并且Variable()的字典从未更改。最后,不要使用“i”、“l”或“o”作为单字符变量名,因为很难区分哪个是字母,哪个是数字。