我正在尝试创建一个将名称和级联作为参数的类,并将一个项目添加到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()是不安全的,并且可以不使用它。
我不会放弃我被卡住的地方。但我可以使用一些帮助。
答案 0 :(得分:0)
您始终可以创建list
或dictionary
来存储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()