我正在尝试从一个复选框列表创建新的复选框,但在一个新的框架。但是,当同时创建时,新创建的复选框就像单选按钮一样。这里是代码(仅用于创建框的函数)
def printcheckbuttons():
val=StringVar()#checkboxlist is a list of checkbox widgets
for x in range (len(checkboxlist)):
for ki in checkboxlist:
if ki.var.get() != 'null':
sale=Checkbutton(frameright,text=ki.var.get()[0:],variable=val,onvalue=ki.var.get(),offvalue='null')
sale.val=val
saletracker.append(sale)#saletracker is a list to track selected checkboxes in checkboxlist ant post them to a second frame
sale.pack(anchor=NW)
checkboxlist.remove(ki)
ki.destroy()
print 'checkboxlist 1',checkboxlist
destroyboxes(checkboxlist)#destroys and removes all checkboxes in checkbuttonlist
print 'checkboxlist',checkboxlist
print "saletracker ", saletracker
您给了它们相同的
variable
属性的值,它们每个都需要有自己的StringVar
实例。您需要将val
的创建移动到循环中,以便每个checkbutton都得到一个唯一的StringVar
。在还有一个问题是,在创建新变量之后,没有将其设置为值。创建checkbutton时,需要确保关联变量设置为on值或off值。在
上面的代码有两个问题。首先,变量val的创建应该针对每个创建的复选框,并且未能将这些框初始化为其中一个值。在进行了这两个更正后,代码运行良好。在
相关问题 更多 >
编程相关推荐