我正在尝试在框架上插入带有文本的标签。然而,它不会与 .place 一起出现,尽管它与 .grid 和 .pack 一起工作得很好。
label = tk.Label(master, text="test")
label.pack() # works
label = tk.Label(master, text="test")
label.grid() # works
label = tk.Label(master, text="test")
label.place(relx=.5, rely=.5) # doesn't work
label = tk.Label(master, text="test")
label.place(relx=.5, rely=.5, width=500, height=500) # doesn't work
需要明确的是,我不会混合这 3 种方法。我分别运行每次尝试。
我的代码结构如下:
class Window(tk.Tk)
def __init__(self):
tk.Tk.__init__(self)
frame_init = Frame_0(self, 0)
frame_init.pack()
class Frame(tk.Frame)
def __init__(self, Window)
tk.Frame.__init__(self, Window)
class Frame_0(Frame):
def __init__(self, Window)
super().__init__(Window)
label = tk.Label(self, text="test")
label.METHOD() # METHOD is pack, grid, or place ()
... somewhere else
Window = Window()
Window.mainloop()
当您使用
place
时,子级的大小不会影响主级的大小。由于您没有指定框架的尺寸,因此其尺寸将为 1x1。您的标签位于框架中,但框架实际上是不可见的。
如果您要使用
place
,则需要您确保将小部件放置在可见小部件内。
label = ctk.CTkLabel(Canvas,text='hello') label.place(relx=0.5,rely=0.5) # 添加小数
尝试锚定法,它可能藏在里面
label.place(anchor = CENTER)
最大化窗口并检查它是否也隐藏在某个地方