Иконки FileChooserDialog ломаются в анаконде как исправить? - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь сделать GUI в Python в первый раз, и я решил использовать gtk3 + через PyGObject.

Я работаю в Ubuntu 18.04 и привык к разработке всего, используя Anaconda.

Я просто следую учебному пособию по https://python-gtk-3-tutorial.readthedocs.io/en/latest/dialogs.html.

Проблема в том, что когда я пытаюсь вызвать FileChooserDialog, используя ~/anaconda3/bin/python, значки в моем диалоговом окне кажутся сломанными. Но когда я использую /usr/bin/python, все работает как положено.

Вот изображение того, как диалог выглядит через anaconda

Я попытался посмотреть файл org.gtk.Settings.FileChooser.gschema.xml но я ничего не вижу в иконках.

Извините, если этой информации недостаточно, я только начинаю с GUI и не нашел подобных вопросов, поэтому не уверен что я должен искать, чтобы это исправить. Я могу дополнить, если кто-то может указать мне правильное направление.

Спасибо!

EDIT1: Поэтому я попытался найти путь, который использует анаконда, по сравнению с путем, который система python использует и они кажутся одинаковыми? Я использовал Gtk.IconTheme().get_search_path().

EDIT2: Последнее, что я обнаружил, это то, что когда я звоню Gtk.IconTheme().get_default().has_icon() для большинства имен значков, ожидаемых в ubuntu-mono-dark, например, «папка» для Например, он возвращает True.

Но когда я звоню Gtk.IconTheme().get_default().get_filename("folder", 64, 0) Анаконда python возвращает AttributeError: 'NoneType' object has no attribute 'get_filename'

Так что IconTheme похоже, что он проверяет правильность значков, но когда он приходит к получению реального файла, он не всегда находит их, но только при использовании Anaconda python.

Это верно для темы Adwaita, например. Anaconda python может возвращать файлы значков из всех подкаталогов в /usr/share/icons/Adwaita, кроме масштабируемых подкаталогов.

Также, похоже, он не может вернуть файлы из темы Humanity, например. Даже если Gtk.IconTheme().get_default().has_icon() возвращает True для одного из значков там.

1 Ответ

0 голосов
/ 31 марта 2020

Возможно, вам не хватает пакета для темы значков в Anaconda, который присутствует в среде Python системы. Это, вероятно, причина, почему он работает с /usr/bin/python.

...