tkinter:动态添加复选框到网格并单独读取值

时间:2016-11-09 19:55:34

标签: python checkbox tkinter

我想动态地将复选框添加到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")

它显示滚动条,垂直滚动条移动一点,但内容不移动。当我将所有内容附加到框架上时,滚动条也不会移动。

0 个答案:

没有答案