Tkinter 标签:当我将字体更改为较小尺寸时保留高度

Tkinter Label: Retain Height when I change font to smaller size

我有一个 Label 非常先进的计算器应用程序。

我希望能够在输入的文本太长时更改字体大小,以便能够输入更多内容,但只保留小部件的高度为了好看。

这是我试过的一段代码:

self.biglabelfont = font.Font(family = "Arial", size = 24, weight = "bold")

self.entrylabel = Label(... font = self.biglabelfont ....)
self.entrylabel.pack(side = LEFT, fill = "x", expand = True)
self.entrylabel.propagate(0)

self.biglabelfont = font.Font(family = "Arial", size = 11, weight = "bold")

self.entrylabel.config(font = self.biglabelfont)

但是一直在缩小高度

您选择使用 pack_propagate 是好的,但您做错了。您必须在标签小部件的 parent 上调用它,而不是在标签小部件上调用它。

这是一个工作示例。请注意,凹陷区域的高度不会随着字体的变大和变小而改变。

import Tkinter as tk
import tkFont

BG = "white"
HEIGHT = 75
def main():
    global the_font, root

    root = tk.Tk()
    the_font = tkFont.Font(family="helvetica", size=18)

    toolbar = make_toolbar(root)
    subframe = make_subframe(root)

    toolbar.pack(side="top", fill="x")
    subframe.pack(side="top", fill="x")

    root.geometry("400x400")
    root.mainloop()

def make_subframe(parent):
    frame = tk.Frame(parent, height=HEIGHT, borderwidth=1, relief="sunken", background=BG)
    frame.pack_propagate(False)

    label = tk.Label(frame, font=the_font, text="0123455.67890", background=BG)
    label.pack(side="top", fill="both", expand=True)
    return frame

def font_plus():
    size = the_font.cget("size")
    size += 2
    the_font.configure(size=size)

def font_minus():
    size = the_font.cget("size")
    size -= 2
    the_font.configure(size=size)

def make_toolbar(parent):
    toolbar = tk.Frame(root)
    grow = tk.Button(toolbar, text="Bigger", command=font_plus)
    shrink = tk.Button(toolbar, text="Smaller", command=font_minus)
    grow.pack(side="left")
    shrink.pack(side="left")

    return toolbar

main()