Tkinter:为什么 .grid() 方法出错?
Tkinter: why .grid() method giving an error?
代码:
import tkinter as tk
import random as rd
number = rd.randint(10,51)
trial = 0
chance = 0
window = tk.Tk()
window.title("Guess")
label = tk.Label(window, text="Guess a number that can be anything from '10' to '50', you have 5 chances !!!\n", font=("Arial Bold",20)).pack()
bt = tk.Button(window, text="Enter")
bt.grid(column=3, row=3)
window.geometry('2000x1000')
window.mainloop()
错误:_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack
如果我尝试删除 'label' 中的 .pack(),文本不会加载并且按钮仍然保持在 (0,0) 而没有错误
您需要使用 grid 或 pack,不能同时使用。这是我的经验之谈。
Error: _tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack
It says it's managed by pack, so you need to use pack manager "OR" grid manager
错误很明显,您不能在容器或 window 中混合使用 pack()
和 grid()
。在这里,您在 label
上使用 pack()
,在 btn
上使用 grid()
。所以把label
改成grid()
。或者将 bt.grid(..)
更改为 bt.pack()
.
请注意,您的 label
是 None
,如果您打算重新使用该标签,以后可能会导致一些错误。所以理想的方法是 grid()
/pack()
在下一行:
label = tk.Label(window, text="Guess a number that can be anything from '10' to '50', you have 5 chances !!!\n", font=("Arial Bold",20))
label.pack()
如果您不打算重用它,那么根本就不用费心给它起一个变量名。
你所要做的就是将标签更改为也使用网格而不是包,我更改了下面的行:
label = tk.Label(window, text="Guess a number that can be anything from '10' to '50', you have 5 chances !!!\n", font=("Arial Bold",20))
label.grid()
代码:
import tkinter as tk
import random as rd
number = rd.randint(10,51)
trial = 0
chance = 0
window = tk.Tk()
window.title("Guess")
label = tk.Label(window, text="Guess a number that can be anything from '10' to '50', you have 5 chances !!!\n", font=("Arial Bold",20)).pack()
bt = tk.Button(window, text="Enter")
bt.grid(column=3, row=3)
window.geometry('2000x1000')
window.mainloop()
错误:_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack
如果我尝试删除 'label' 中的 .pack(),文本不会加载并且按钮仍然保持在 (0,0) 而没有错误
您需要使用 grid 或 pack,不能同时使用。这是我的经验之谈。
Error: _tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack It says it's managed by pack, so you need to use pack manager "OR" grid manager
错误很明显,您不能在容器或 window 中混合使用 pack()
和 grid()
。在这里,您在 label
上使用 pack()
,在 btn
上使用 grid()
。所以把label
改成grid()
。或者将 bt.grid(..)
更改为 bt.pack()
.
请注意,您的 label
是 None
,如果您打算重新使用该标签,以后可能会导致一些错误。所以理想的方法是 grid()
/pack()
在下一行:
label = tk.Label(window, text="Guess a number that can be anything from '10' to '50', you have 5 chances !!!\n", font=("Arial Bold",20))
label.pack()
如果您不打算重用它,那么根本就不用费心给它起一个变量名。
你所要做的就是将标签更改为也使用网格而不是包,我更改了下面的行:
label = tk.Label(window, text="Guess a number that can be anything from '10' to '50', you have 5 chances !!!\n", font=("Arial Bold",20))
label.grid()