2016-04-22 110 views
-1

さまざまな長さのチェックボックスリストを3セット作成し、それをtkinter GUI内のページに3列で表示しようとしています。リスト1は整数ベースのリスト、2 & 3はストリングです。これらのリストの名前の変数は、GUIの開始前にコードの前半で定義されています。 N_index = [1, 2, 3] T_index = [T1, T2, T3] P_index = [P1, P2, P3]tkinterで複数のチェックボックスを作成する

リストの長さは、私は、この使用しているコードがそのように実行されるたびに変更されます。

N_leng = range(1, int(len(N_index)+1)) T_leng = range(1, int(len(T_index)+1)) P_leng = range(1, int(len(P_index)+1))

私は部分的に作成するために使用したコードを私のGUIはここから取られるSwitch between two frames in tkinter(ありがとう)

私はこれらのリストをページ1に入れようとしています。

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されているということですが、ラベルやチェックボックスの両方が同じ親を共有し、あなたに

+0

どこにルートウィンドウを作成しますか? 'ckbox_params'は' f'についてどのように知っていますか?あなたが[mcve]を投稿すると助けになります。 –

+0

なぜあなたは 'int(len(...))'をやっていますか? 'len'はintを返します。 –

+0

申し訳ありません。PM 2Ring私はあなたに必要な情報量を知らなかった。私はこのすべてに非常に新しく、これはOOPで私の最初の試みですので、私は間違いを犯します。 – OParker

答えて

1

ありがとうございます。

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) 
     ... 

あなたはそのようにpackgridを混在させることはできません。 fの中のすべてのウィジェットについては、どちらか一方を使用する必要があります。

+0

あなたは本当にありがとうございます!今すぐご利用ください! – OParker

関連する問題