使用tkinter.Menu tearoff命令怎么办?

问题描述

我有一个级联的tkinter.Menu,它是使用tearoff = 1创建的。 给泪液命令传递了两个参数:

  • 菜单窗口的名称(父窗口的窗口ID?),例如“。#!menu。#!menu#!menu3”之类的字符串,以及
  • 撕下的菜单窗口的名称(新的撕下菜单的根窗口的窗口ID),例如“ .tearoff1”之类的字符串。

如何处理此信息? 这是我想做的事情:认情况下,撕下的菜单放置在屏幕位置(x = 0,y = 0),但是我想将其放置在另一个(x,y)位置。>

我如何做到这一点?

尝试按建议使用“ nametowidget”的示例代码

import tkinter as tk

class App:
    def __init__(self,root):
        menubar = tk.Menu(root)
        menuA = tk.Menu(menubar,tearoff=0)
        menuB = tk.Menu(menubar,tearoff=0)
        menuC = tk.Menu(menubar,tearoff=1,tearoffcommand=self.onTearoff)
        menuC.add_command(label="Menu Row1")
        menuC.add_command(label="Menu Row2")
        menuC.add_command(label="Menu Row3")
        menubar.add_cascade(label="MenuA",menu=menuA)
        menubar.add_cascade(label="MenuB",menu=menuB)
        menubar.add_cascade(label="MenuC",menu=menuC)
        self.menubar = menubar
        root.config(menu=menubar)
        root.geometry("300x200")

    def onTearoff(self,wParent,wMenu):
        print("onTearoff(%s,%s)" % (wParent,wMenu)) # wMenu = ".tearoff1"
        w = root.nametowidget(wMenu) # KeyError: 'tearoff1'
        w.geometry("+50+50")

if __name__ == "__main__":
    root = tk.Tk()
    app = App(root)
    root.mainloop()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)