Python 在tkinter中创建多个复选框

Python 在tkinter中创建多个复选框,python,user-interface,checkbox,tkinter,Python,User Interface,Checkbox,Tkinter,我试图创建3组不同长度的复选框列表,然后在tkinter GUI的页面上以三列显示它们。列表1是基于整数的列表,2和3是字符串。这些列表名称的变量在GUI启动之前在代码中定义。 N_索引=[1,2,3] T_索引=[T1,T2,T3] P_索引=[P1,P2,P3] 每次运行代码时,列表的长度都会改变,因此我使用了以下方法: N_leng=range(1,int(len(N_索引)+1)) T_leng=范围(1,int(len(T_索引)+1)) P_leng=范围(1,int(len(P_索

我试图创建3组不同长度的复选框列表,然后在tkinter GUI的页面上以三列显示它们。列表1是基于整数的列表,2和3是字符串。这些列表名称的变量在GUI启动之前在代码中定义。
N_索引=[1,2,3]
T_索引=[T1,T2,T3]
P_索引=[P1,P2,P3]

每次运行代码时,列表的长度都会改变,因此我使用了以下方法:

N_leng=range(1,int(len(N_索引)+1))
T_leng=范围(1,int(len(T_索引)+1))
P_leng=范围(1,int(len(P_索引)+1))

我部分用于创建GUI的代码取自此处(谢谢)

我正试着把这些清单放到第一页

class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        f = tk.Frame(self)
        f.pack(side="left")

        label = ttk.Label(f, text="Page One", font=LARGE_FONT)
        label.pack(pady=10, padx=10)
然后我有3组复选框。当我运行代码时,它会运行并且永远不会结束。但是,即使在调试模式下,它也不会抛出错误。有人能发现我的错误吗

    def ckbox_params():
        for i, j in zip(N_index, N_leng):
            ivar = tk.IntVar()
            N_selection1 = tk.Checkbutton(f, text="%d" % i, variable=ivar, onvalue=i, offvalue="")
            N_selection1.grid(sticky="nw", pady=4)

        for i, k in zip(T_index, T_leng):
            svar = tk.StringVar()
            T_selection1 = tk.Checkbutton(f, text="%s" % i, variable=svar, onvalue=i, offvalue="")
            T_selection1.grid(sticky="nw", pady=4)

        for i, l in zip(P_index, P_leng):
            svar = tk.StringVar()
            P_selection1 = tk.Checkbutton(f, text="%s" % i, variable=svar, onvalue=i, offvalue="")
            P_selection1.grid(sticky="nw", pady=4)
    ckbox_params()`
对于我做错了什么,任何建议、想法或解决方案都会有帮助


谢谢

问题在于,您使用的标签是
pack
,复选框是
grid
,但标签和复选框共享同一父项

class PageOne(tk.Frame):

    def __init__(self, parent, controller):
        ...
        label = ttk.Label(f, text="Page One", font=LARGE_FONT)
        label.pack(pady=10, padx=10)
        ...
        N_selection1 = tk.Checkbutton(f, text="%d" % i, variable=ivar, onvalue=i, offvalue="")
        N_selection1.grid(sticky="nw", pady=4)
        ...

您不能以这种方式将
pack
grid
混合使用。对于直接位于
f
中的所有小部件,必须使用其中一个。

在哪里创建根窗口?
ckbox\u参数
如何知道
f
?如果你发布一个。你为什么要做
int(len(…)
len
返回一个整数。抱歉,PM 2Ring我不知道您需要多少信息。我对这一切都很陌生,这是我第一次尝试OOP,所以我会犯错误。