2016-12-13 1 views
0

こんにちは私はtkinterのcheckboxenに問題があります。誰かが私の間違いがどこにあると言うことができる?Tkinter:チェックボタンとリスト

def edit_contact_gui(self): 
    """GUI to edit the created contacts.""" 
    self.edit_contact_wd = tk.Tk() 
    self.edit_contact_wd.title('Edit Contacts of the Phonebook:"%s"'\ 
           % self.book) 
    self.button_edit = tk.Button(self.edit_contact_wd, text = 'Edit',\ 
           command = self.edit_contact) 


    try: 
     with open('%s.txt' % self.book, 'rb') as file: 
      book = pickle.load(file) 
      x = 1 
      self.var_lst = [] 
      for i in book: 
       var = tk.IntVar() 
       tk.Label(self.edit_contact_wd, text = i).grid(row = x, \ 
                   column = 0) 

       tk.Checkbutton(self.edit_contact_wd, text = 'edit', \ 
           variable = var).grid(row = x, column = 1) 
       self.var_lst.append(var.get()) 

       x += 1 

      self.button_edit.grid(row = x+1, column = 1) 

    except FileNotFoundError: 
     tk.Label(self.edit_contact_wd, text = 'The phonebook has no entrys!', fg = 'red').grid(row = 1, column = 0) 

    self.edit_contact_wd.mainloop() 

def edit_contact(self): 
    print(self.var_lst) 

私のGUI出力は機能しますが、プログラムは私にリスト0 [0,0,0,0,0]を返します。私の意見では、マークされたチェックボックスは1を返すが、それはそれにdoesntする。どうして?手伝って頂けますか ?

+0

をお読みください使用する必要があります[どのように作成します –

+0

'edit_contact_gui'が呼び出された時点で既にGUIが動作していますか、これは初めてのものですか? 'Tk'のインスタンスを食べましたか? –

+0

私はすでにGUIを持っています。 to関数は関数(ポップアップウィンドウ)の下にあります。 – Fl4mer

答えて

0

あなたはIntVarvar.get()

self.var_lst.append(var) # without .get() 

からIntVarvar)リストではなく、価値を維持する必要がありますし、edit_contact()にあなたがget()

for var in self.var_lst: 
    print(var.get()) 
+0

しかし、もし私がこれを行うと、チェックボックスにチェックがついていれば0になります。 – Fl4mer

+0

チェックボタンにチェックを入れ、 '編集 'ボタンをクリックすると' 1'が出ます。コンソール/ターミナル/ cmd.exe/powershellで実行すると、別の問題やプログラムでエラーメッセージが表示されることがあります。私はそれを確認することはできませんし、このコード部分には何の問題もありません。 – furas

+0

btw:@BryanOakleyと同じように、2つの 'Tk()'または2つの 'mainloop()'がある場合、 'tkinter'は正しく動作しません。 – furas

関連する問題