TransWikia.com

не могу создать объект класса tkinter.font.Font

Stack Overflow на русском Asked on December 11, 2021

from tkinter.font import Font
f=Font(family='Monofur',size=32)
AttributeError: 'NoneType' object has no attribute 'call'

Я не понимаю,о каком объекте NoneType может идти речь,в IDLE

>>> Font
<class 'tkinter.font.Font'>

ввод класса Font возвращает обычный подкласс tkinter.font

На сайтах с примерами кода,где я был,аналогичные куски кода работают исправно

One Answer

Посмотрим ошибку детально:

>>> from tkinter.font import Font                                               
>>> f = Font(family='Monofur', size=32)                                         
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/tkinter/font.py", line 93, in __init__
    tk.call("font", "create", self.name, *font)
AttributeError: 'NoneType' object has no attribute 'call'

tk - это объект главного окна, который берется или из глобальной переменной модуля tkinter, или передается первым параметром при создании объекта Font (см. исходники).
Из-за того что окно еще не создано, значение этой переменной равно None, и при вызове метода call от tk возникает ошибка.

Нужно сначала создать объект Tk() (главное окно), потом уже создавать шрифт:

from tkinter import Tk
from tkinter.font import Font

root = Tk()
f = Font(family='Monofur', size=32)
# или f = Font(root, family='Monofur', size=32)

Answered by insolor on December 11, 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