如何增加文本小部件中的字体大小?

bib*_*bek 3 python tkinter python-3.x tkinter-entry

当我使用以下代码增加字体大小时,它也会增加小部件的大小。是否可以通过保持文本小部件的大小不变来增加字体大小?谢谢你

  A11 = tkinter.Text(top, height=28, width=70,background = "#02e0a1")
  labelfont = ('times', 20, 'bold')
  A11.config(font = labelfont)
Run Code Online (Sandbox Code Playgroud)

Bry*_*ley 7

如果您强制 GUI 窗口为特定大小,则更改文本小部件的字体不会导致文本小部件增长*。将文本小部件的宽度和高度设置为 1(一)通常会有所帮助,这样当您更改字体时它甚至不会尝试增大。

  • 好吧,小部件将尝试增长,但窗口上的大小限制将防止小部件变得太大。

这是一个简单的人为例子。

import tkinter as tk
import tkinter.font as tkFont

class Example(object):
    def __init__(self):
        root = tk.Tk()
        self.font = tkFont.Font(family="helvetica", size=18)
        text = tk.Text(root, width=1, height=1, font=self.font)
        button = tk.Button(root, text="Bigger", command=self.bigger)

        button.pack(side="top")
        text.pack(side="top", fill="both", expand=True)

        text.insert("end", "Hello, world!")

        # force the widow to a specific size after it's created
        # so that it won't change size when we change the font
        root.geometry("800x400")

    def start(self):
        tk.mainloop()

    def bigger(self):
        size = int(self.font.cget("size"))
        size += 2
        self.font.configure(size=size)


app = Example()
app.start()
Run Code Online (Sandbox Code Playgroud)

通过将大小约束放在框架而不是根窗口上,相同的技术可以在较小的范围内工作。如果将文本小部件放在框架内,关闭几何传播,然后为框架指定固定大小,小部件将不会增长。这是关闭几何传播有用的少数情况之一。

这是使用此技术对上述示例的修改:

import tkinter as tk
import tkinter.font as tkFont

class Example(object):
    def __init__(self):
        root = tk.Tk()
        self.font = tkFont.Font(family="helvetica", size=18)
        button = tk.Button(root, text="Bigger", command=self.bigger)

        # create a frame for the text widget, and let it control the
        # size by turning geometry propagation off
        text_frame = tk.Frame(root, width=800, height=400)
        text_frame.pack_propagate(False)
        text = tk.Text(text_frame, width=1, height=1, font=self.font)
        text.pack(side="top", fill="both", expand=True)

        button.pack(side="top")
        text_frame.pack(side="top", fill="both", expand=True)

        text.insert("end", "Hello, world!")

    def start(self):
        tk.mainloop()

    def bigger(self):
        size = int(self.font.cget("size"))
        size += 2
        self.font.configure(size=size)


app = Example()
app.start()
Run Code Online (Sandbox Code Playgroud)