【问题标题】:Python -> Labels cant be shown to FramePython - >标签不能显示到框架
【发布时间】:2017-02-08 23:49:51
【问题描述】:

标签无法显示在 leftFrame 中。我对 Python GUI 很陌生。我的代码有点像这样:

from tkinter import *

root = Tk()

mainFrame = Frame(root, width=700, height=500)
mainFrame.pack()

leftFrame = Frame(mainFrame, bg="#c2c3c4")
leftFrame.place(relheight=1, relwidth=0.34, anchor=W)

label1 = Label(leftFrame, text="Label1")
label2 = Label(leftFrame, text="Label2")

label1.grid(columnspan=2, sticky=W, pady=(20, 0))
label2.grid(columnspan=3, sticky=W, pady=(5, 0))

root.mainloop()

【问题讨论】:

  • 很可能存在问题,因为您同时使用了packplacegrid。尝试坚持使用一个几何管理器。
  • @StevenSummers:不,问题不在于packplacegrid 混合在一起。只是 OP 错误地使用了place。我认为最好的做法是在应用程序中同时使用gridpack,但请注意,您不能将它们同时用于具有相同父级的小部件。
  • 啊好吧,我认为最好避免混合它们。

标签: python tkinter label frame


【解决方案1】:

在这种特殊情况下,您看不到标签,因为它们不在屏幕上。 leftFrame 的锚点为 W,这意味着 leftFrame 的垂直中心位于 0,0。换句话说,框架的一半在窗口的可见部分之上。

证明这一点的快速解决方法是使用锚点 NW 而不是 W,这将导致框架的左上角位于其父框架的左上角。

但是,我强烈建议您完全不要使用place。它有它的用途,但真的应该很少使用。您最终不得不自己做很多工作,结果通常对字体、分辨率或窗口大小的变化反应不灵敏。

【讨论】:

  • 注明。感谢您的回复。 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多