Python:如何在OOP函数中使用tkinter Checkbutton

时间:2018-01-11 05:33:53

标签: python oop tkinter

我遇到了这段特殊的代码。我把这个问题浓缩到了本节。

我在Python中运行一种菜单,第一个菜单将您发送到第二个菜单,在第二个菜单中,有一个用户可以打开/关闭的复选按钮。在第三个菜单中,我想让它读取是否打开/关闭检查按钮并将其转换为布尔值。代码:

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()

输出:复选框是打开还是关闭,输出"假0"。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

根据Lafexlos的提示,错误在于调用tk.Tk()两次。对于新窗口,您必须使用tk.Toplevel()。

只需将keyline更改为:

self.master2 = tk.Toplevel()

修复一切。这需要我很长时间才能解决。感谢您的帮助,祝您今后阅读本文能够好运。