Python Tkinter-对复选框进行排序并打印(如果有)';重新点击
我正在学习Tkinter,有两个问题 [在评论部分回答的第一个问题] 1-为什么字典中的项目没有按正确的顺序打印? 如果从按钮中删除“网格”部分,您可能会看到它们没有订购 2-为什么按钮未显示?我想在复选框下面做一个按钮,它会为每个点击的复选框打印“1” 这是我的推荐信 下面是我的代码: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
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”作为单字符变量名,因为很难区分哪个是字母,哪个是数字。