变量每次我创造一个类的强度时都会改变

时间:2017-03-02 07:24:14

标签: python class tkinter cascade

我正在尝试创建一个将名称和级联作为参数的类,并将一个项目添加到GUI的菜单中(使用tkinter)。

代码如下所示:

from tkinter import *

class new_menu_item:

    def __init__(self, name, cascade):
        self.name = name
        self.cascade = cascade
        menu = Menu(root)
        root.config(menu=menu)
        name = Menu(menu)
        menu.add_cascade(label=cascade, menu=name)
        name.add_command(label = name)
root = Tk()
newproject = new_menu_item('New Project', 'Edit')
oldproject = new_menu_item('Add employee', 'File')

root.mainloop()

我搜索并找到了一种方法来使用exec(name)代替这个部分的名称(我相信问题所在):

name = Menu(menu)
menu.add_cascade(label=cascade, menu=name)

但我也明白exec()是不安全的,并且可以不使用它。

我不会放弃我被卡住的地方。但我可以使用一些帮助。

1 个答案:

答案 0 :(得分:0)

您始终可以创建listdictionary来存储Menu对象。由于tkinter会自动为创建的任何新对象生成唯一名称

from tkinter import *

class new_menu_item:

    def __init__(self, name, cascade):
        global projects
        self.name = name
        self.cascade = cascade
        menu = Menu(root)
        root.config(menu=menu)
        name = Menu(menu)
        menu.add_cascade(label=cascade, menu=name)
        name.add_command(label = name)
        projects[name] = menu  #stores name and menu into a dictionary 
root = Tk()
projects={}
newproject = new_menu_item('New Project', 'Edit')
oldproject = new_menu_item('Add employee', 'File')

root.mainloop()