Eu fiz meu aplicativo para o Ubuntu App Showdown. Quando eu inicio pelo terminal usando quickly run
ele funciona bem. Eu empacotei com quickly package
e instalei localmente. Infelizmente isso não começa. Eu acho que é um problema com o link para o arquivo css dentro do meu código python, mas eu não sei como devo ligar corretamente, então ele vai funcionar após a instalação.
Saída do terminal ao iniciar o aplicativo instalado:
michal@michal-Inspiron-530-11:~$ easy-stopwatch
/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for object 'Window' can't be set after construction
Gtk.Window.__init__(self, type=type, **kwds)
(easy-stopwatch:10446): Gtk-CRITICAL **: gtk_css_section_get_file: assertion 'section != NULL' failed
(easy-stopwatch:10446): Gtk-CRITICAL **: gtk_css_section_get_end_position: assertion 'section != NULL' failed
(easy-stopwatch:10446): Gtk-CRITICAL **: gtk_css_section_get_end_line: assertion 'section != NULL' failed
Traceback (most recent call last):
File "/usr/bin/easy-stopwatch", line 33, in <module>
easy_stopwatch.main()
File "/usr/lib/python2.7/dist-packages/easy_stopwatch/__init__.py", line 33, in main
window = EasyStopwatchWindow.EasyStopwatchWindow()
File "/usr/lib/python2.7/dist-packages/easy_stopwatch_lib/Window.py", line 35, in __new__
new_object.finish_initializing(builder)
File "/usr/lib/python2.7/dist-packages/easy_stopwatch/EasyStopwatchWindow.py", line 56, in finish_initializing
css_provider.load_from_path('data/ui/gtk-style.css')
File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function
return info.invoke(*args, **kwargs)
gi._glib.GError: <unknown>:1:0: Failed to import: Error opening file: No such file or directory
michal@michal-Inspiron-530-11:~$
Parte do meu código python:
# Styling via CSS file
screen = Gdk.Screen.get_default()
css_provider = Gtk.CssProvider()
css_provider.load_from_path('data/ui/gtk-style.css')
style_context = Gtk.StyleContext()
style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
------------- EDITAR ----------------
Após algumas pesquisas, percebi que quickly package
não faz o aplicativo ser instalado em /opt
, mas quickly package --extras
o faz. Depois de instalar em /opt
eu editei meu arquivo python para que o link para o arquivo css se pareça com isto:
css_provider.load_from_path('/opt/extras.ubuntu.com/easy-stopwatch/share/easy-stopwatch/ui/gtk-style.css')
Depois disso, meu aplicativo funciona. Não tenho certeza se posso fazer isso no código que gostaria de enviar ao Ubuntu App Showdown.