首页 > 解决方案 > 调整窗口大小时如何调整所有小部件和文本的大小

问题描述

现在我现在已经有很多类似的问题了,但没有一个有效,而且很多已经过时了。从我收集的内容来看,人们总是推荐grid_rowconfigureand grid_columnconfigure,但这与文本大小无关。这是一个简单的例子:

from tkinter import *
root=Tk()

l1 = Label(root, text="This", borderwidth=2, relief="groove")
l1.grid(row=0,column=0,sticky='NSEW')

l2 = Label(root, text="That", borderwidth=2, relief="groove")
l2.grid(row=0,column=1,sticky='NSEW')

for i in range(1):
    root.grid_rowconfigure(i, weight=1)
for i in range(2):
    root.grid_columnconfigure(i, weight=1)

root.mainloop()

我找到了这个网站,但它是从 2010 年开始的,复制粘贴它没有得到任何结果(当然是在处理导入名称之后)

标签: python-3.xtkinterresize

解决方案


我发现这会起作用:

from tkinter import *
import tkinter.font as tkFont
root=Tk()

my_font = tkFont.Font(size=10)
def resizer(event):
   if event.width in range(200,225):
      my_font.configure(size=10)   
   elif event.width in range(226,300):
      my_font.configure(size=20)
   elif event.width > 300:
      my_font.configure(size=30)

l1 = Label(root, text="This", borderwidth=2, relief="groove", font=my_font)
l1.grid(row=0,column=0,sticky='NSEW')

l2 = Label(root, text="That", borderwidth=2, relief="groove", font=my_font)
l2.grid(row=0,column=1,sticky='NSEW')

for i in range(1):
    root.grid_rowconfigure(i, weight=1)
for i in range(2):
    root.grid_columnconfigure(i, weight=1)

root.bind("<Configure>", resizer)
root.mainloop()

您可以更改range(200,225)等以满足您的需要,elif如果需要,还可以额外更改。

这是从这个答案中找到的。并进行了编辑以适应此脚本。


推荐阅读