TransWikia.com

проблемы с биндингом события tkinter ""

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 почему-то срабатывает,и шрифт в начале,естественно,получается меньше,чем должен быть

One Answer

Решение нашёл,заметив,что 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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP