Python 3.x tkinter变量.grid(行=0)

Python 3.x tkinter变量.grid(行=0),python-3.x,tkinter,Python 3.x,Tkinter,我已经开始与tkinter合作,我有这样的问题。比如说, from tkinter import * root = Tk() frame = Frame(root) frame.pack() theLabel = Label(root, text="bla bla") theLabel.grid(row=0) root.mainloop() 此代码不起作用,并给出类似的错误 File "C:\Users\Kenan\AppData\Local\Programs\Python\Pytho

我已经开始与tkinter合作,我有这样的问题。比如说,

from tkinter import *

root = Tk()

frame = Frame(root)
frame.pack()

theLabel = Label(root, text="bla bla")
theLabel.grid(row=0)

root.mainloop()
此代码不起作用,并给出类似的错误

File "C:\Users\Kenan\AppData\Local\Programs\Python\Python35-32\lib\tkinter\__init__.py", line 2074, in grid_configure
    + self._options(cnf, kw))
_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack

当在同一帧/根中使用pack和grid的组合时,会出现此问题

将第9行的
网格更改为
pack()
,反之亦然

from tkinter import *

root = Tk()

frame = Frame(root)
frame.pack()

theLabel = Label(frame, text="bla bla") *this should use frame - not root
theLabel.grid()

root.mainloop()
希望这有帮助!
Luke

当您在同一帧/根中使用pack和grid的组合时,会出现此问题

将第9行的
网格更改为
pack()
,反之亦然

from tkinter import *

root = Tk()

frame = Frame(root)
frame.pack()

theLabel = Label(frame, text="bla bla") *this should use frame - not root
theLabel.grid()

root.mainloop()
希望这有帮助!
Luke

正如@Luke.py所提到的,您不能在同一个小部件中混合使用
grid()
pack()

  • 在第6行,您正在将一个
    框架
    打包到
    根目录
  • 在第9行,您正在对
    根目录中的
    标签进行网格化

也许您想在框架内
grid()
标签
,在这种情况下,将第8行更改为

theLabel = Label(frame, text="bla bla")
或者您确实希望
框架
标签
处于同一级别,在这种情况下,将第6行更改为

frame.grid()

正如@Luke.py所提到的,您不能在同一个小部件中混合使用
grid()
pack()

  • 在第6行,您正在将一个
    框架
    打包到
    根目录
  • 在第9行,您正在对
    根目录中的
    标签进行网格化

也许您想在框架内
grid()
标签
,在这种情况下,将第8行更改为

theLabel = Label(frame, text="bla bla")
或者您确实希望
框架
标签
处于同一级别,在这种情况下,将第6行更改为

frame.grid()

首先谢谢你的回答。但是,.pack仍然有效。我需要使用.grid。实际上我已经写了一些条目,我想把它们放在标签附近。你能帮我一下吗?你把
标签
的根目录(从
根目录
改为
框架
)都改了,本来可以解决这个问题的。但另外,您还将
grid
更改为
pack
,这不再是必需的了。@xZise好地方!首先谢谢你的回答。但是,.pack仍然有效。我需要使用.grid。实际上我已经写了一些条目,我想把它们放在标签附近。你能帮我一下吗?你把
标签
的根目录(从
根目录
改为
框架
)都改了,本来可以解决这个问题的。但另外,您还将
grid
更改为
pack
,这不再是必需的了。@xZise好地方!谢谢你们,汉克斯,我错了。我不应该用它。当我移除它时,它工作了。感谢所有人:)如果你开始在所有平台上使用ttk来实现更多的原生控件和窗口,你会希望在每个
Toplevel
中放置一个
ttk.Frame
,以获得正确的(系统默认)颜色背景谢谢大家,我的错误是Frame。我不应该用它。当我移除它时,它工作了。感谢所有人:)如果您开始在所有平台上使用ttk来实现更多具有本地风格的控件和窗口,您将希望在每个
Toplevel
中放置一个
ttk.Frame
,以获得正确的(系统默认)颜色背景