【问题标题】:How to prevent Tkinter labelframe size changes when an empty label is inserted插入空标签时如何防止 Tkinter 标签框大小发生变化
【发布时间】:2013-08-03 21:17:38
【问题描述】:

我创建了一个 LabelFrame 小部件。开头的尺寸不错:

import Tkinter
form = Tkinter.Tk()

errorArea = Tkinter.LabelFrame(form, text=" Errors ", width=250, height=80)
errorArea.grid(row=2, column=0, columnspan=2, sticky="E", \
             padx=5, pady=0, ipadx=0, ipady=0)

但是当我在其中插入一个空字符串时,errorArea 小部件的大小会根据插入的字符串进行调整:

errorMessage = Tkinter.Label(errorArea, text="")
errorMessage.grid(row=0, column=0, padx=5, pady=2, sticky='W')

我如何给errorArea 小部件一个固定的大小,这样它的大小就不会根据插入的标签而改变?

【问题讨论】:

    标签: python widget tkinter size


    【解决方案1】:

    这个问题对我来说一直很有趣。我发现修复它的一种方法是使用place 方法而不是grid

    import Tkinter
    
    form = Tkinter.Tk()
    
    errorArea = Tkinter.LabelFrame(form, text=" Errors ", width=250, height=80)
    errorArea.grid(row=2, column=0, columnspan=2, sticky="E", \
                 padx=5, pady=0, ipadx=0, ipady=0)
    
    errorMessage = Tkinter.Label(errorArea, text="")
    
    # 1) 'x' and 'y' are the x and y coordinates inside 'errorArea'
    # 2) 'place' uses 'anchor' instead of 'sticky'
    # 3) There is no need for 'padx' and 'pady' with 'place'
    # since you can specify the exact coordinates
    errorMessage.place(x=10, y=10, anchor="w")
    
    form.mainloop()
    

    这样,标签被放置在窗口中而不收缩标签框。

    【讨论】:

    • @Downvoter:你能给出一个你投反对票的理由吗?我非常关心我的工作质量。因此,如果您发现我的代码有问题,请告诉我这是什么问题,以便我可以修复我的帖子或更好地解释我所做的事情。
    【解决方案2】:

    如果您使用粘性值将小部件粘贴到其单元格的所有四个侧面而不是一侧,则当您将小标签小部件放入其中时,它不会缩小。

    另一个选项是调用errorArea.grid_propagate(False),它告诉网格区域不要缩小或扩展以适应其内容。这通常会导致不受欢迎的调整大小行为,或者至少需要您做一些额外的工作才能获得正确的调整大小行为。

    【讨论】:

    • 它不起作用,当我在errorArea中使用“WENS”时,它会弄乱表单的结构。
    • 如果您能向我们展示更多代码,我们或许可以解决布局问题。
    【解决方案3】:

    在声明 Labelframe 后立即使用网格函数。

    前:

    String_l = ttk.Labelframe(pw, text='String',width=100, height=408).grid(column=1, row=0, padx=4, pady=4,rowspan=2)
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2015-11-26
      相关资源
      最近更新 更多