Stack Overflow на русском Asked on December 16, 2021
from tkinter.font import Font
from tkinter import *
root=Tk()
root.geometry('200x200')
root['bg']='black'
def config(a):
font['size']=-round(a.width*0.6/11) #len(lab['text'])=11
print(a.width)
lab['font']=font
font=Font(family='Droid Serif',size=-11,root=root.master)
lab=Label(root,text='get bigger!'.upper(),font=font,bg='black',fg='white')
lab.place(relx=0.2,relwidth=0.6,rely=0.45)
root.bind('<Configure>',config)
root.mainloop()
В итоге на outputе сразу,в начале программы,появляется:
200
120
120
Окно я никак не трогал и не конфигурировал,но bind почему-то срабатывает,и шрифт в начале,естественно,получается меньше,чем должен быть
Решение нашёл,заметив,что 120/200=0.6,то есть отношение длины lab к длине root,оказалось,что событие реагирует не только на root,но и на все его дочерние виджеты
def config(a):
if a.widget.__class__==Tk:
font['size']=-round(a.width*0.6/11) #len(lab['text'])=11
lab['font']=font
Теперь всё работает
Answered by Someone on December 16, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP