Python: как использовать кнопку tkinter Checkbutton в функциях OOP

105
11

Я застрял в этом конкретном фрагменте кода. Я сконцентрировал проблему на этом разделе.

Я запускаю своеобразное меню на Python, где первое меню отправляет вас во второе меню, а во втором меню есть кнопка, в которую пользователь может включать/выключать. В третьем меню, я хочу, чтобы он читал, если checkbutton включен/выключен и преобразован в Boolean. Код:

import tkinter as tk

class MainMenu(object):
def __init__(self):
self.launch_MainMenu()
def launch_MainMenu(self):
self.master = tk.Tk()
tk.Button(self.master,text="MY BUTTON",command= lambda:self.launch_SideMenu()).grid()
tk.mainloop()
def launch_SideMenu(self):
self.master2 = tk.Tk()
self.var1 = tk.IntVar()
tk.Checkbutton(self.master2,variable=self.var1).grid()
tk.Button(self.master2,text="Test",command= lambda:self.launch_FinalMenu()).grid()
def launch_FinalMenu(self):
d = bool(int(self.var1.get()))
print(d,self.var1.get())

mainMenu = MainMenu()

Выход: если флажок включен или выключен, он выводит "False 0".

Любая помощь будет очень высоко ценится!

спросил(а) 2018-01-11T08:33:00+03:00 3 года, 1 месяц назад
1
Решение
86

Согласно подсказке Lafexlos, ошибка заключается в вызове tk.Tk() дважды. Для нового окна вы должны использовать tk.Toplevel().

Простое изменение ключевого слова:

self.master2 = tk.Toplevel()

исправляет все. Это заняло у меня много времени. Спасибо за помощь, и вам повезло, что кодеры читают это в будущем.

ответил(а) 2018-01-11T09:12:00+03:00 3 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема