使用 Python tkinter 重新缩放小部件时,如何使用小部件的其余部分缩放文本?
How to scale the text with the rest of the widget, when rescaling a widget with Python tkinter?
重新缩放小部件时,我希望文本与小部件的其余部分一起缩放。
下面是一些通过单击拖动来缩放小部件的代码。这工作正常,但文本无法缩放。
import tkinter as tk
#Create & Configure root
root = tk.Tk()
Grid.rowconfigure(root, 0, weight=1)
Grid.columnconfigure(root, 0, weight=1)
#Create & Configure frame
frame=tk.Frame(root)
frame.grid(row=0, column=0, sticky=N+S+E+W)
#Create a 5x10 (rows x columns) grid of labels inside the frame
for row_index in range(5):
Grid.rowconfigure(frame, row_index, weight=1)
for col_index in range(10):
Grid.columnconfigure(frame, col_index, weight=1)
btn = tk.Label(frame, text="Row %s: Col %s" % (row_index, col_index),
background = "#F8FC10") #create a label inside frame
btn.grid(row=row_index, column=col_index, sticky=N+S+E+W)
root.mainloop()
我希望文本与小部件的其余部分一起缩放。小部件可以很好地缩放,但文本不会。是否可以通过单击拖动缩放的小部件来缩放文本?
是的,可以缩放文本,但这确实需要一些工作。我不得不做一些非常相似的事情,我做的方式是通过字体大小。当您创建文本小部件时,默认情况下文本小部件会使用默认字体 'TkFixedFont'。该命名字体基本上是 'Courier 10' 左右。您可以通过 Text.config(font=...) 手动设置文本字体。诀窍是根据文本小部件的相对大小更改字体的大小。因此,您可以使用某种缩放函数将文本小部件的大小转换为您想要的字体大小,然后根据您计算出的字体大小使用新字体更新文本小部件的字体。在您定义的 '<Configure>'
事件处理程序中执行此操作,当文本小部件(或整个应用程序)调整大小时将调用该事件处理程序。
在我的应用程序中,我有用于放大和缩小的按钮,我通过如上所述更改字体大小来实现。就像一个魅力。
重新阅读您的 post,我发现您想要更改某些标签的文本。创建一个新的命名字体并将其指定为所有标签的字体。然后,在您的 '<Configure>'
处理程序中,只需使用新字体大小更新命名字体,它就会传播到所有使用该命名字体的小部件。这适用于标签、按钮、文本小部件等。
此外,作为旁注,当您缩放标签和其他小部件上的文本时,这些小部件的大小将根据它们显示的文本进行调整。
重新缩放小部件时,我希望文本与小部件的其余部分一起缩放。
下面是一些通过单击拖动来缩放小部件的代码。这工作正常,但文本无法缩放。
import tkinter as tk
#Create & Configure root
root = tk.Tk()
Grid.rowconfigure(root, 0, weight=1)
Grid.columnconfigure(root, 0, weight=1)
#Create & Configure frame
frame=tk.Frame(root)
frame.grid(row=0, column=0, sticky=N+S+E+W)
#Create a 5x10 (rows x columns) grid of labels inside the frame
for row_index in range(5):
Grid.rowconfigure(frame, row_index, weight=1)
for col_index in range(10):
Grid.columnconfigure(frame, col_index, weight=1)
btn = tk.Label(frame, text="Row %s: Col %s" % (row_index, col_index),
background = "#F8FC10") #create a label inside frame
btn.grid(row=row_index, column=col_index, sticky=N+S+E+W)
root.mainloop()
我希望文本与小部件的其余部分一起缩放。小部件可以很好地缩放,但文本不会。是否可以通过单击拖动缩放的小部件来缩放文本?
是的,可以缩放文本,但这确实需要一些工作。我不得不做一些非常相似的事情,我做的方式是通过字体大小。当您创建文本小部件时,默认情况下文本小部件会使用默认字体 'TkFixedFont'。该命名字体基本上是 'Courier 10' 左右。您可以通过 Text.config(font=...) 手动设置文本字体。诀窍是根据文本小部件的相对大小更改字体的大小。因此,您可以使用某种缩放函数将文本小部件的大小转换为您想要的字体大小,然后根据您计算出的字体大小使用新字体更新文本小部件的字体。在您定义的 '<Configure>'
事件处理程序中执行此操作,当文本小部件(或整个应用程序)调整大小时将调用该事件处理程序。
在我的应用程序中,我有用于放大和缩小的按钮,我通过如上所述更改字体大小来实现。就像一个魅力。
重新阅读您的 post,我发现您想要更改某些标签的文本。创建一个新的命名字体并将其指定为所有标签的字体。然后,在您的 '<Configure>'
处理程序中,只需使用新字体大小更新命名字体,它就会传播到所有使用该命名字体的小部件。这适用于标签、按钮、文本小部件等。
此外,作为旁注,当您缩放标签和其他小部件上的文本时,这些小部件的大小将根据它们显示的文本进行调整。