Я работаю над приложением, использующим tkinter.Я создал меню «Настройки», в котором я хочу использовать виджет tkinter add_checkbutton.С помощью этого виджета я хочу установить значение переменной self.savedata.
Я попробовал пример из другого вопроса ( Создание опций меню с помощью Checkbutton в Tkinter? ), ноЯ не смог выяснить, в чем здесь проблема в моем коде.
import tkinter as tk
from tkinter import BooleanVar
# Function used in application
def def_savedata(self):
print ("Check button value: " + str(self.savedata))
# Application
class App(tk.Tk):
def __init__(self, master=None, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
# Variable for check button in menu
self.savedata = BooleanVar
# Menu for app
self.add_menu()
def add_menu(self):
# Menu
self.menubar = tk.Menu(self)
# Add file menu
self.filemenu = tk.Menu(self.menubar, tearoff=0)
self.filemenu.add_command(label="Exit", command=lambda: self.quit())
self.menubar.add_cascade(label="File", menu=self.filemenu)
# Add settings menu
self.settings = tk.Menu(self.menubar, tearoff=0)
self.settings.add_checkbutton(label="Save data", variable = self.savedata, onvalue=1, offvalue=0, command=lambda: def_savedata(self))
self.menubar.add_cascade(label="Settings", menu=self.settings)
tk.Tk.config(self, menu=self.menubar)
def _DEF_main():
app = App()
app.mainloop()
if __name__ == '__main__':
_DEF_main()
Я ожидаю установить переменную self.savedata в значение check_button (то есть 0 или 1), но вывод <'tkinter.BooleanVar'>.