Храните абсолютный путь в каталоге модуля в самом начале модуля:
package_directory = os.path.dirname(os.path.abspath(__file__))
Затем загрузите ресурсы на основе этого package_directory
:
font_file = os.path.join(package_directory, 'fonts', 'myfont.ttf')
И в конце концов, не изменяйте ресурсы процесса, такие как текущий рабочий каталог. Никогда не нужно менять рабочий каталог в хорошо написанной программе, поэтому избегайте os.chdir()
.
Вы можете создать базовый компонент, чтобы понять это. В базовый компонент вы можете добавить свою переменную hidden
и, в конечном итоге, вы можете предоставить метод для изменения значения переменной hidden
.
Таким образом, все ваши расширяющие компоненты будут иметь переменную hidden
. Но если вам больше ничего не нужно и ваша переменная hidden
обновляется просто логическим значением (this.hidden = true
или this.hidden = false
), у вас не будет никаких других преимуществ.
Наконец, имейте в виду, что кнопка (или та, которую вы хотите использовать) для обновления значения переменной hidden
должна остаться в шаблонных файлах подкомпонентов.
С этим сценарием я думаю, что ваше решение является лучшим, но если вы хотите немного усложнить свой подход, вы можете использовать
HideButtonComponent
только с «показать меньше» / « показать больше "кнопка HideService
, содержащая вашу переменную hidden
(обновлена с помощью HideButtonComponent
) Затем в ваши компоненты вы можете вставить HideService
в конструкторы и подписаться на hidden
изменения переменных. В файлы шаблонов ваших компонентов вы можете поместить свой HideButtonComponent
, чтобы избежать дублирования кода кнопки
Но я повторяю: это очень небольшое преимущество