Я пишу оболочку над Tkinter для удобства, есть класс Label:
class Label:
def __init__(self,
text: str = "Надпись",
width: int = 0, # в коде изменяется
height: int = 0, # в коде изменяется
font: str = "Arial 14", # Шрифт
bg: str = "SystemButtonFace", # задний фон
fg: str = "SystemButtonText" # цвет текста
):
При попытке изменить шрифт у меня возникла ошибка.
В файле с классами всё нормально:
{'text': 'Надпись', 'font': 'Arial 14', 'width': 7, 'height': 0, 'bg': 'SystemButtonFace', 'fg': 'SystemButtonText', 'lbl': <tkinter.Label object .!label>}
Однако при импортировании пропадают некоторые атрибуты и остаётся только это:
{'text': 'Надпись', 'width': 7, 'height': 0, 'lbl': <tkinter.Label object .!label>}
Кажется, проблема заключается в том, что при импортировании класса Label, некоторые атрибуты не передаются должным образом. Чтобы разобраться с этой проблемой, я бы предложил следующие шаги:
1. Убедитесь, что вы импортируете класс Label правильно. Ваш файл с классами должен иметь расширение `.py`, и вы должны импортировать класс Label, используя инструкцию `from <имя_файла> import Label`. Например, если ваш файл называется `my_tkinter_wrapper.py`, вы должны импортировать класс следующим образом:
```python
from my_tkinter_wrapper import Label
```
2. В вашем классе Label, вы не используете атрибуты `width`, `height`, `font`, `bg`, и `fg` при создании объекта `tkinter.Label`. Вам нужно передать эти аргументы в конструктор `tkinter.Label`. Вот как это должно выглядеть:
```python
from tkinter import Label as TkLabel
class Label:
def __init__(self,
text: str = "Надпись",
width: int = 0,
height: int = 0,
font: str = "Arial 14",
bg: str = "SystemButtonFace",
fg: str = "SystemButtonText"
):
self.lbl = TkLabel(text=text, width=width, height=height, font=font, bg=bg, fg=fg)
```
3. Если вы все еще сталкиваетесь с проблемой, убедитесь, что вы используете атрибуты объекта Label, а не словарь. Вам нужно обратиться к атрибутам объекта Label, используя точечную нотацию, например:
```python
my_label = Label(text="Пример", font="Arial 14")
print(my_label.text) # Выведет "Пример"
print(my_label.font) # Выведет "Arial 14"
```
Если вы следуете этим шагам, вы должны иметь возможность использовать ваш класс Label без проблем.
Возможно, ты импортируешь его из неправильного места или неправильно используешь при создании экземпляра.
Убедись, что ты правильно импортируешь класс Label из файла с классами. Если файл с классами называется, например, "my_classes.py", то используй следующий импорт:
from my_classes import Label
Если класс Label находится внутри модуля или пакета, убедись, что указываешь правильный путь к классу при импорте.
Если импорт выполнен правильно, проверь, как ты создаешь экземпляр класса Label. Удостоверься, что передаешь все необходимые аргументы, такие как шрифт (font), задний фон (bg) и цвет текста (fg).
Код класса Label, который ты привел, в порядке. Проблема, скорее всего, связана с импортом или созданием экземпляра класса.