2016-12-13 2 views
0

Привет, ребята У меня проблема с checkboxen в tkinter. Может ли кто-нибудь сказать, где моя вина?Tkinter: Checkbuttons и список

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] полный нулей. По-моему, флажок, отмеченный, возвращает 1, но он этого не делает. Зачем? Вы можете мне помочь ?

+0

Пожалуйста, прочтите [Как создать Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) –

+0

У вас уже есть GUI, запущенный к тому времени, когда вызывается 'edit_contact_gui', или это первый раз, когда вы создаете съел экземпляр 'Tk'? –

+0

У меня уже есть графический интерфейс. Функция to работает только под функцией (Pop-Up Windows.) – Fl4mer

ответ

0

Вы должны держать IntVar (var) по списку, а не значение из IntVar (var.get())

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

и edit_contact() вы должны использовать get()

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

Но если я это сделаю, у меня есть только нули, а не 1, если флажок отмечен – Fl4mer

+0

, вы должны иметь '1', когда вы проверяете контрольные кнопки и нажимаете кнопку« Редактировать ». Возможно, у вас другая проблема или программа показывает вам сообщение об ошибке при запуске в консоли/терминале/cmd.exe/powershell. Я не могу проверить это, и я не вижу никаких проблем в этой части кода. – furas

+0

Кстати: как сказал @BryanOakley - если у вас есть два 'Tk()' или два 'mainloop()', то 'tkinter' может работать некорректно. – furas

Смежные вопросы