3 pièce(s) jointe(s)
Présentation de Menu sous GTK
Bonjour,
J'ai un programme assez complexe pour lequel j'ai une différence de présentation suivant l'OS. Je me suis donc inspiré d'un exemple pour reproduire le phénomène dans un code simplifié à l'extrême. Voici donc mes éléments.
J'utilise la fonction Gio.menu pour créer un menu. Mais dans un OS (Mint 20.2), l'item "Application" apparaît bien alors que sur l'autre OS (Manjaro), je n'ai qu'une petite icône qui ressemble à rien. Pire, si je change de thème (dark) l'icône n'est plus visible.
Voici le code de mon test
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# I use this exemple: https://developer.gnome.org/gnome-devel-demos/stable/gmenu.py.html.en
import sys, gi
try:
gi.require_version('Gtk', '3.0')
except:
print('[E] wrong Gtk version')
exit()
from gi.repository import Gtk
from gi.repository import Gio
class MyWindow(Gtk.ApplicationWindow):
def __init__(self, app):
Gtk.Window.__init__(self, title="GMenu Example", application=app)
class MyApplication(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self)
def do_activate(self):
win = MyWindow(self)
win.show_all()
def do_startup(self):
# start the application
Gtk.Application.do_startup(self)
# create a menu
menu = Gio.Menu()
# append to the menu one option
menu.append("Quit", "app.quit")
# set the menu as menu of the application
self.set_app_menu(menu)
# option "quit"
quit_action = Gio.SimpleAction.new("quit", None)
quit_action.connect("activate", self.quit_cb)
self.add_action(quit_action)
# callback function for "quit"
def quit_cb(self, action, parameter):
self.quit()
app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status) |
Résultat sur Mint
Pièce jointe 601493
Résultat sur Manjaro
Pièce jointe 601494
Résultat sur Manjaro thème foncé (Dark)
Pièce jointe 601495
On voit bien que la présentation est différente (ligne application présente ou pas) et que d'un côté on a du texte, de l'autre une icône.
Avez-vous une piste ?
Merci
.