Как использовать кнопки проверки меню tkinter для изменения значений переменных? - PullRequest
0 голосов
/ 27 мая 2019

Я работаю над приложением, использующим 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'>.

...