Python Tkinter; .place() 不起作用,但 .grid() 和 .pack() 起作用

问题描述 投票:0回答:3

我正在尝试在框架上插入带有文本的标签。然而,它不会与 .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()
python tkinter
3个回答
0
投票

当您使用

place
时,子级的大小不会影响主级的大小。由于您没有指定框架的尺寸,因此其尺寸将为 1x1。您的标签位于框架中,但框架实际上是不可见的。

如果您要使用

place
,则需要您确保将小部件放置在可见小部件内。


0
投票

label = ctk.CTkLabel(Canvas,text='hello') label.place(relx=0.5,rely=0.5) # 添加小数


-1
投票

尝试锚定法,它可能藏在里面

label.place(anchor = CENTER)

最大化窗口并检查它是否也隐藏在某个地方

© www.soinside.com 2019 - 2024. All rights reserved.