Python 使用tkinter,是否可以在菜单对象的标签上添加标签?

Python 使用tkinter,是否可以在菜单对象的标签上添加标签?,python,python-3.x,menu,tkinter,menuitem,Python,Python 3.x,Menu,Tkinter,Menuitem,我已经创建了一个菜单(附在菜单按钮上),数据将写入其中。此菜单的编码如下所示: global kli kli = Menubutton(text = "Selective undo", state = DISABLED) kli.pack(side = "left") kli.menu = Menu(kli, tearoff = 0) kli["menu"] = kli.menu global undo1 undo1 = kli.menu kli.pack() 菜单在另一个函数中写入,在该函数

我已经创建了一个菜单(附在菜单按钮上),数据将写入其中。此菜单的编码如下所示:

global kli
kli = Menubutton(text = "Selective undo", state = DISABLED)
kli.pack(side = "left")
kli.menu = Menu(kli, tearoff = 0)
kli["menu"] = kli.menu
global undo1
undo1 = kli.menu
kli.pack()
菜单在另一个函数中写入,在该函数中写入,如下所示:

# 'po' is a Point class object and `selectundo` is another function to relevant to this question
undo1.add_command(label = po, command = lambda: selectundo(undo1.index(po)))
菜单和菜单按钮功能完美。但是,我的问题是,由于我必须在菜单中建立索引(出于其他不相关的原因),菜单的标签必须是点对象,因为点对象包含我想要运行的函数。但是,正因为如此,它看起来像这样:

我希望每个项目的标签与菜单函数中实际嵌入的标签不同。解决这个问题的唯一方法是在添加到菜单中的每个项目的标签上加上另一个标签。是否可以这样做?如果没有,是否有其他方法在添加到菜单中的项目上显示与
菜单中嵌入的标签不同的标签?在此问题上的任何帮助都将不胜感激!:)

p.S.:我正在为我的程序使用turtle to,并且此菜单必须是GUI,因此,如果我错了,请纠正我,但我认为我无法使用
诅咒
模块创建此菜单。


编辑:我想让po包含的函数(我可以通过po.getfunction()接收)成为菜单中每个项目的标签,而点对象本身以某种方式保留在“背景”中,这样程序仍然可以基于po对象作为一个整体,而不是每个项目的标签,在菜单中进行索引。我希望这能消除任何困惑

标签始终是文本。当您执行
label=po
时,python将
po
转换为文本,并将此文本用作标签。@furas嘿,又是您!那么,如何将
po
转换为文本?你是做str(po)
之类的事吗?我尝试使用
标签
小部件使菜单成为主菜单,但它似乎不起作用。在Point类中,您需要定义一个名为“_u; str _;”(删除空格)的方法,该方法将返回一个要表示对象的字符串。我只是猜测,但是对于一个点对象,您可能希望
返回“({x},{y})”.format(x=self.x,y=self.y)
@R.Kap如果self.function会生成一个表示对象实例的字符串,那么请确定。这里有一个更好的解释我的意思。
\uuu str\uuu
方法定义了在执行
str(thing)
时应该返回的内容。我认为您根本不需要getfunction()方法。我认为您在
def\uuu str\uuu():return“({function})”.format(function=self.function)
上做得很对,我当时不明白您想要什么。标签始终是文本。当您执行
label=po
时,python将
po
转换为文本,并将此文本用作标签。@furas嘿,又是您!那么,如何将
po
转换为文本?你是做str(po)之类的事吗?我尝试使用
标签
小部件使菜单成为主菜单,但它似乎不起作用。在Point类中,您需要定义一个名为“_u; str _;”(删除空格)的方法,该方法将返回一个要表示对象的字符串。我只是猜测,但是对于一个点对象,您可能希望
返回“({x},{y})”.format(x=self.x,y=self.y)
@R.Kap如果self.function会生成一个表示对象实例的字符串,那么请确定。这里有一个更好的解释我的意思。
\uuu str\uuu
方法定义了在执行
str(thing)
时应该返回的内容。我认为您根本不需要getfunction()方法。我认为您在
def\uuu str\uuu():return“({function})”.format(function=self.function)
上做得很对,我当时不明白您想要什么。