我想动态地将复选框添加到tkinter网格,然后让用户检查其中一些,然后查看,检查了哪些复选框。
以下是代码:
top = tkinter.Tk()
var2 = tkinter.IntVar()
main()
top.mainloop()
# in main
for feat in feats:
counter += 1
tkinter.Checkbutton(top, text=str(merkmal) + " ist " +
str(label), command=lambda: testResult(),
variable=var2).grid(row=counter, sticky="W")
# callback
def testResult():
print(var2)
两个问题:
a)我的网格上需要一个垂直和水平滚动条
我查看了其他帖子,看到我需要添加一个画布,然后将滚动条添加到画布,但我没有让它工作。这是我的尝试:
w = tkinter.Canvas(top)
scrollbar = tkinter.Scrollbar(top, orient="vertical",command=w.yview)
scrollbar.grid(row=0,column=1,sticky='ns')
w.config(yscrollcommand=scrollbar.set, xscrollcommand=scrollbar.set)
w.grid(row=0,column=0,sticky='nsew')
然后将复选框添加到w
而不是top
。垂直滚动条显示,但我无法滚动。
b)当我检查其中一个方框时,所有方框都会被检查。如何才能使每个复选框单独检查?
我是tkinter的新手,并且真的不需要学习太多东西,只需要以某种方式工作。
感谢您的帮助!
修改
canvas = tkinter.Canvas(top, bg='#FFFF12', width=300, height=900, scrollregion=(0, 0, 900, 900))
hbar = tkinter.Scrollbar(top, orient="horizontal")
hbar.pack(side="bottom", fill="x")
hbar.config(command=canvas.xview)
vbar = tkinter.Scrollbar(top, orient="vertical")
vbar.pack(side="right", fill="y")
vbar.config(command=canvas.yview)
canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
canvas.pack(side="left", expand=True, fill="both")
它显示滚动条,垂直滚动条移动一点,但内容不移动。当我将所有内容附加到框架上时,滚动条也不会移动。