更改字体大小而不弄乱 Tkinter 按钮大小

2024-03-27

我遇到麻烦了更改按钮的字体大小在 Tkinter 中,当我尝试这样做时该按钮还可以展开/收缩基于文本的大小。有没有办法可以通过固定按钮的大小来改变文本大小?

我在设计 tic-tac-toe 应用程序时遇到了这个问题,但是为了省去你的麻烦,这里有一个非常好的最小的例子实践中遇到的问题:

import Tkinter as tk

MyWindow = tk.Tk()
MyWindow.geometry("500x550")


button = tk.Button(MyWindow,text="Hello!",width=17,height=10,font=('Helvetica', '20'))
button.grid(row=1, column=1)

MyWindow.mainloop()

The 最重要的部分这是font=('Helvetica', '15')或者更具体地说,15号。如果你更改该号码再次运行,不仅文本会变大/变小,但按钮也会!我该如何解决这个问题?

这可能是一个really简单的问题。我刚刚开始使用 Tkinter。预先感谢我收到的任何帮助!


通常,当您为按钮指定宽度时,该宽度以字符为单位进行测量(即:width=1指一个平均大小字符的宽度)。但是,如果按钮有图像,则宽度指定以像素为单位的大小。

按钮可以同时包含图像和文本,因此一种策略是将 1x1 像素作为图像,以便您可以以像素为单位指定按钮大小。当您这样做并更改字体大小时,按钮将不会变大,因为它被赋予了绝对大小。

下面是一个说明该技术的示例。运行代码,然后单击“更大”或“更小”,可以看到文本大小发生变化,但按钮没有变化。

import Tkinter as tk
import tkFont

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

def smaller():
    size = font.cget("size")
    size = max(2, size-2)
    font.configure(size=size)

root = tk.Tk()
font = tkFont.Font(family="Helvetica", size=12)

toolbar = tk.Frame(root)
container = tk.Frame(root)

toolbar.pack(side="top", fill="x")
container.pack(side="top", fill="both", expand=True)

bigger = tk.Button(toolbar, text="Bigger", command=bigger)
smaller = tk.Button(toolbar, text="Smaller", command=smaller)

bigger.pack(side="left")
smaller.pack(side="left")

pixel = tk.PhotoImage(width=1, height=1)
for row in range(3):
    container.grid_rowconfigure(row, weight=1)
    for column in range(3):
        container.grid_columnconfigure(column, weight=1)
        button = tk.Button(container, font=font, text="x",
            image=pixel, compound="center", width=20, height=20)
        button.grid(row=row, column=column)

root.mainloop()

话虽如此,这几乎从来都不是一个好主意。如果用户想要更大的字体,整个用户界面应该适应。 Tkinter 确实很擅长实现这一点,以至于默认情况下一切都可以正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改字体大小而不弄乱 Tkinter 按钮大小 的相关文章

随机推荐