#1 Le 11/02/2013, à 16:07
- Totem
[Resolu] - Créer un menu contextuel avec Python, Glade et Gtk
Bonjour,
Je cherche à avoir un menu contextuel avec des actions que j'ai créé dans un fichier glade.
exemple des actions dans le fichier Glade:
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkActionGroup" id="compose actions">
<child>
<object class="GtkAction" id="undo">
<property name="label" translatable="yes">A_nnuler</property>
<property name="short_label" translatable="yes">A_nnuler</property>
<property name="stock_id">gtk-undo</property>
</object>
<accelerator key="z" modifiers="GDK_CONTROL_MASK"/>
</child>
<child>
<object class="GtkAction" id="redo">
<property name="label" translatable="yes">_Rétablir</property>
<property name="short_label" translatable="yes">_Rétablir</property>
<property name="stock_id">gtk-redo</property>
</object>
<accelerator key="z" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
</child>
<child>
<object class="GtkAction" id="cut">
<property name="label" translatable="yes">Co_uper</property>
<property name="short_label" translatable="yes">Co_uper</property>
<property name="stock_id">gtk-cut</property>
</object>
<accelerator key="x" modifiers="GDK_CONTROL_MASK"/>
</child>
<child>
<object class="GtkAction" id="copy">
<property name="label" translatable="yes">_Copier</property>
<property name="short_label" translatable="yes">_Copier</property>
<property name="stock_id">gtk-copy</property>
</object>
<accelerator key="c" modifiers="GDK_CONTROL_MASK"/>
</child>
<child>
<object class="GtkAction" id="paste">
<property name="label" translatable="yes">C_oller</property>
<property name="short_label" translatable="yes">C_oller</property>
<property name="stock_id">gtk-paste</property>
</object>
<accelerator key="v" modifiers="GDK_CONTROL_MASK"/>
</child>
Exemple de mon code Python:
....
self.actions = self.builder.get_object("compose actions")
self.actions.get_action("undo").activate.connect(on_action)
self.actions.get_action("redo".activate.connect(on_action)
...
def on_button_press_event(self, widget, event):
if event.button != 3:
return False
self.menu = Gtk.Menu()
undo = Gtk.ImageMenuItem()
undo.set_related_action(self.actions.get_action("undo"))
self.menu.append(undo)
redo = Gtk.ImageMenuItem()
redo.set_related_action(self.actions.get_action("redo"))
self.menu.append(redo)
self.menu.show_all();
self.menu.popup(None, None, None, None, event.button, event.time)
Mon Menu contextuel ne fonctionne pas Quelqu'un pourrait me dire ce que j'ai mal fait et surtout comment faire?
Merci d'avance
PS : J'ai un message d'erreur dans le terminal. N'etant pas chez moi pour l'instant je l'ajouterai dès que je serais chez moi.
Dernière modification par Totem (Le 12/02/2013, à 14:48)
il n'existe que deux choses d'infinies, l'univers et la connerie humaine, mais pour l'univers je n'ai pas de certitude absolue
A. Einstein.
Hors ligne
#2 Le 12/02/2013, à 14:51
- Totem
Re : [Resolu] - Créer un menu contextuel avec Python, Glade et Gtk
Il faut ajouter la 2eme ligne dans l'extrait ci-dessous dans le fichier GLADE (voir https://bugs.launchpad.net/ubuntu/+sour … ug/1013879)
<object class="GtkActionGroup" id="compose actions">
<property name="accel_group">accelgroupname</property>
Dernière modification par Totem (Le 12/02/2013, à 14:54)
il n'existe que deux choses d'infinies, l'univers et la connerie humaine, mais pour l'univers je n'ai pas de certitude absolue
A. Einstein.
Hors ligne