如何在 'Toplevel' Tkinter Window 中缩放标签字体大小?
How to scale label font size inside a 'Toplevel' Tkinter Window?
正在努力在 tkinter 中显示一些信息 'Toplevel' window。我希望文本大小随着 window 的大小的增加而增加。为此,我只是在顶层小部件中使用标签小部件。
我创建了一个函数,该函数在 window 的调整大小事件期间触发,并更新全局字体变量。
def showResults(self):
self.top = Toplevel(master = None, height=750,width=750, relief="sunken")
self.top.title("Results")
self.font = ("Times", 20, "bold")
self.fontSize = IntVar()
self.fontSize.set(20)
self.resultX = Label(self.top, text="Name: X", font=("Times", self.fontSize.get(), "bold")).pack(side = "left", fill = "both", expand=True)
self.top.bind('<Configure>', self.resize)
print(self.fontSize.get())
def resize(self, event):
self.fontSize.set(self.top.winfo_height())
我预计 self.fontSize 会在调用调整大小后更新,但是,它没有被更新。但是,如果我在 showResults 中移动该打印语句以调整大小,它会打印更新后的大小。它只是不刷新标签小部件。任何人都知道一种可能 'refresh' 标记小部件以显示正确信息的简单方法吗?谢谢!
您可以通过定义一个 font.Font
对象并将其设置为 Label
小部件的字体来实现:
from tkinter import *
from tkinter import font
class Body(Frame):
def __init__(self,master=None,**kwargs):
super().__init__(master,**kwargs)
self.button = Button(self,text="Click",command=self.showResults)
self.button.pack()
def showResults(self):
self.font = font.Font(self.master, family="Times", size=20, weight="bold")
self.top = Toplevel(master=None, height=750, width=750, relief="sunken")
self.top.title("Results")
self.resultX = Label(self.top, text="Name: X", font=self.font)
self.resultX.pack(side="left",fill="both",expand=True)
self.update()
self.top.bind('<Configure>', self.resize)
def resize(self, event):
self.font['size'] = self.top.winfo_height()
root = Tk()
Body(root).pack()
root.mainloop()
正在努力在 tkinter 中显示一些信息 'Toplevel' window。我希望文本大小随着 window 的大小的增加而增加。为此,我只是在顶层小部件中使用标签小部件。
我创建了一个函数,该函数在 window 的调整大小事件期间触发,并更新全局字体变量。
def showResults(self):
self.top = Toplevel(master = None, height=750,width=750, relief="sunken")
self.top.title("Results")
self.font = ("Times", 20, "bold")
self.fontSize = IntVar()
self.fontSize.set(20)
self.resultX = Label(self.top, text="Name: X", font=("Times", self.fontSize.get(), "bold")).pack(side = "left", fill = "both", expand=True)
self.top.bind('<Configure>', self.resize)
print(self.fontSize.get())
def resize(self, event):
self.fontSize.set(self.top.winfo_height())
我预计 self.fontSize 会在调用调整大小后更新,但是,它没有被更新。但是,如果我在 showResults 中移动该打印语句以调整大小,它会打印更新后的大小。它只是不刷新标签小部件。任何人都知道一种可能 'refresh' 标记小部件以显示正确信息的简单方法吗?谢谢!
您可以通过定义一个 font.Font
对象并将其设置为 Label
小部件的字体来实现:
from tkinter import *
from tkinter import font
class Body(Frame):
def __init__(self,master=None,**kwargs):
super().__init__(master,**kwargs)
self.button = Button(self,text="Click",command=self.showResults)
self.button.pack()
def showResults(self):
self.font = font.Font(self.master, family="Times", size=20, weight="bold")
self.top = Toplevel(master=None, height=750, width=750, relief="sunken")
self.top.title("Results")
self.resultX = Label(self.top, text="Name: X", font=self.font)
self.resultX.pack(side="left",fill="both",expand=True)
self.update()
self.top.bind('<Configure>', self.resize)
def resize(self, event):
self.font['size'] = self.top.winfo_height()
root = Tk()
Body(root).pack()
root.mainloop()