Tkinter网格管理器无法管理“顶层窗口”菜单

密码的艺术

所以我有一个Python 3和Tkinter应用程序。我目前正在尝试在弹出窗口的顶部添加一个菜单栏。创建起来很好,但是一旦尝试grid(),一切都变得一团糟,并向我抛出此错误:

[first line omitted]
File "C:\Users\Me\Documents\sync.py", line 13 in __init__
  self.createWidgets()
File "C:\Users\Me\Documents\sync.py", line 21, in createWidgets
  self.menubar.grid(column = 0, comlumnspan = 3)
File "C:\Program Files (x86)\Python34\lib\tkinter\__init__.py", line 2020, in grid_configure + self._options(cnf,kw))
_tkinter.TclError: can't manage ".41452544.49048880": it's a top-level window

因此,从这一点来看,流程显然是有效的:__init__调用createWidgets创建self.menubar,添加子菜单,调用self.menubar.grid

我不明白的是,为什么Tkinter认为被称为网格的菜单栏是顶层窗口。self.menubar.grid()在跟踪中列出的,显然是问题的原因,而不是根本原因,因此这一定是它的想法。

这是有问题的代码:

def createWidgets(self):
    self.menubar = tk.Menu(self)
    self.menubar.grid(column = 0, columnspan = 3)

    SyncMenu = tk.Menu(self.menubar, tearoff = 0)
    SyncMenu.add_command(label = "Connect", command = self.Sync.Connect)
    SyncMenu.add_command(label = "Disconnect", command = self.Sync.Disconnect)

    FileMenu = tk.Menu(self.menubar, tearoff = 0)
    FileMenu.add_command(label = "Upload File", command = self.File.Upload)
    FileMenu.add_command(label = "Browse Online Files", command = self.File.Browse)

    self.menubar.add_cascade(label = "Sync", menu = SyncMenu)
    self.menubar.add_cascade(label = "File", menu = FileMenu)

无论我打电话到哪里,都会出现同样的错误grid()

这个问题的另一部分是,我使用的是Python 3和更新的Tkinter,所以tk.Tk()对我而言不是相反,要进行初始化,我需要这样做:

class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self,master)
        self.grid()
        self.createWidgets()
        self.master.geometry("500x500")
布莱恩·奥克利(Bryan Oakley)

您不能在菜单上使用网格。Tkinter认为它们是顶级窗口,因为它们漂浮在其他窗口之上。

创建传统菜单栏的通常方法是将其与menu根窗口属性关联

root = tk.Tk()
menubar = tk.Menu(root)
...
root.configure(menu=menubar)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tkinter网格管理器无法管理“顶层窗口”菜单

来自分类Dev

Tkinter网格管理器(TypeError)

来自分类Dev

tkinter 网格管理器行为

来自分类Dev

在Tkinter窗口上使用网格管理器时如何实现滚动条

来自分类Dev

使用Tkinter网格管理器将背景图像调整为窗口大小

来自分类Dev

使用Tkinter网格管理器将背景图像调整为窗口大小

来自分类Dev

无法运行Gala窗口管理器

来自分类Dev

很棒的窗口管理器无法启动

来自分类Dev

无法让窗口会话管理器工作

来自分类Dev

Python Tkinter网格管理器不起作用,列

来自分类Dev

Tkinter - 使用网格管理器设置高度

来自分类Dev

Xfce无法打开窗口管理器和窗口管理器调整

来自分类Dev

替代窗口管理器

来自分类Dev

多个窗口管理器

来自分类Dev

NuGet软件包管理器窗口无法打开

来自分类Dev

15.10窗口管理器无法正确加载

来自分类Dev

如何在Xcode的窗口菜单上的管理器上管理设备?

来自分类Dev

禁用桌面窗口管理器会话管理器

来自分类Dev

_tkinter.TclError:无法在中使用几何图形管理器网格。这里已经有由packenter代码管理的奴隶

来自分类Dev

_tkinter.TclError:无法在中使用几何管理器网格。在这里已经有由packenter代码管理的从站

来自分类Dev

窗口管理器,显示管理器,登录管理器执行什么顺序

来自分类Dev

调整窗口大小时垂直生长小部件(使用网格几何管理器)

来自分类Dev

网格几何管理器不会将框架居中在窗口中间

来自分类Dev

StumpWM作为窗口管理器

来自分类Dev

StumpWM作为窗口管理器

来自分类Dev

Fedora窗口管理器列表

来自分类Dev

独立运行mutter窗口管理器

来自分类Dev

StumpWM作为窗口管理器

来自分类Dev

在LightDM中更改窗口管理器

Related 相关文章

  1. 1

    Tkinter网格管理器无法管理“顶层窗口”菜单

  2. 2

    Tkinter网格管理器(TypeError)

  3. 3

    tkinter 网格管理器行为

  4. 4

    在Tkinter窗口上使用网格管理器时如何实现滚动条

  5. 5

    使用Tkinter网格管理器将背景图像调整为窗口大小

  6. 6

    使用Tkinter网格管理器将背景图像调整为窗口大小

  7. 7

    无法运行Gala窗口管理器

  8. 8

    很棒的窗口管理器无法启动

  9. 9

    无法让窗口会话管理器工作

  10. 10

    Python Tkinter网格管理器不起作用,列

  11. 11

    Tkinter - 使用网格管理器设置高度

  12. 12

    Xfce无法打开窗口管理器和窗口管理器调整

  13. 13

    替代窗口管理器

  14. 14

    多个窗口管理器

  15. 15

    NuGet软件包管理器窗口无法打开

  16. 16

    15.10窗口管理器无法正确加载

  17. 17

    如何在Xcode的窗口菜单上的管理器上管理设备?

  18. 18

    禁用桌面窗口管理器会话管理器

  19. 19

    _tkinter.TclError:无法在中使用几何图形管理器网格。这里已经有由packenter代码管理的奴隶

  20. 20

    _tkinter.TclError:无法在中使用几何管理器网格。在这里已经有由packenter代码管理的从站

  21. 21

    窗口管理器,显示管理器,登录管理器执行什么顺序

  22. 22

    调整窗口大小时垂直生长小部件(使用网格几何管理器)

  23. 23

    网格几何管理器不会将框架居中在窗口中间

  24. 24

    StumpWM作为窗口管理器

  25. 25

    StumpWM作为窗口管理器

  26. 26

    Fedora窗口管理器列表

  27. 27

    独立运行mutter窗口管理器

  28. 28

    StumpWM作为窗口管理器

  29. 29

    在LightDM中更改窗口管理器

热门标签

归档