Bonsoir à la base dans un Gtk.dialog le code suivant permet de programmer un bouton qui réagit par défaut suite a un appui direct sur touche "enter" ici c'est le bouton a qui ont affecté la réponse Gtk.ResponseType.OK
1 2 3 | _buttons = ((gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OK,gtk.RESPONSE_OK)) window = gtk.Dialog('Saisie de texte', None,buttons = _buttons) window.set_default_response(Gtk.ResponseType.OK) |
j'obtiens bien le bouton gtk.STOCK_OK préactivé et qui réagit à un enter
en revanche pour l'autre façon de gérer les boutons par add_action_widget je ne trouve pas la commande qu'il faut dans le code ci dessous c'est le bouton help et en général le bouton le + à gauche qui prend systématiquement cette option et je ne maîtrise pas du tout l'ordre d'affichage des widgets bizarre !!!!
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | #!/usr/bin/env python # coding: utf-8 #test_dialog_defaultbutton.py from gi.repository import Gtk class boite_stockicon_etiquette: ''' box with STOCK Icon ''' def __init__(self,text, stock_icon=None,sizeicon=Gtk.IconSize.MENU): # On cree une boite pour la pixmap et l'etiquette self.box = Gtk.HBox(False, 0) self.box.set_border_width(2) # A present l'image. if stock_icon is not None: image = Gtk.Image.new_from_stock(stock_id=stock_icon,size=sizeicon) else: image = Gtk.Image.new_from_stock(stock_id=Gtk.STOCK_OK,size=sizeicon) # On cree une etiquette pour le bouton. etiquette = Gtk.Label(text) # pack image and label in the box self.box.pack_start(image, False, False, 3) self.box.pack_start(etiquette, False, False, 3) def box_xpm(self): return self.box class dialogDefaultButton: """ make button with stock icon""" def _make_button(self,etiquette=None,stock_icon=None): boite1= boite_stockicon_etiquette(etiquette,stock_icon=stock_icon) boite = boite1.box_xpm() bouton = Gtk.Button() bouton.add(boite) return bouton def __init__(self,text): self.dialog = Gtk.Dialog(title="Dialog") self.dialog.set_default_size(400, 300) self.dialog.set_border_width(10) self.dialog.add_action_widget(self._make_button(etiquette=u'Valid',stock_icon=Gtk.STOCK_OK),Gtk.ResponseType.OK) self.dialog.add_action_widget(self._make_button(etiquette=u'Cancel',stock_icon=Gtk.STOCK_CANCEL),Gtk.ResponseType.CANCEL) #Please test under with True ou False flag_button_valide_setdefault = False #if flag_button_valide_setdefault is True the valid button is set like self.dialog.set_default_response(Gtk.ResponseType.OK) if flag_button_valide_setdefault is not True: self.dialog.add_action_widget(self._make_button(etiquette=u'Add', stock_icon=Gtk.STOCK_ADD),Gtk.ResponseType.APPLY) self.dialog.add_action_widget(self._make_button(etiquette=u'Help', stock_icon=Gtk.STOCK_ABOUT),Gtk.ResponseType.HELP) label = Gtk.Label(text) content_area = self.dialog.get_content_area() content_area.add(label) self.dialog.show_all() #Here action do not run ok why ? # Ok only with button created with add_button def run(self): while 1: self.reponse = self.dialog.run() if self.reponse in [Gtk.ResponseType.OK, Gtk.ResponseType.CANCEL,Gtk.ResponseType.DELETE_EVENT]: print("OK sa marche button clicked") print self.reponse break else: print 'Hello' self.dialog.destroy() return self.reponse if __name__ == "__main__": demo = dialogDefaultButton(text= u'demo of default button depend widget list why?\n\ \n\ if flag_button_valide_setdefault == True , \n\ the valid button is set like self.dialog.set_default_response(Gtk.ResponseType.OK)\n\ if flag_button_valide_setdefault == False \n\ \n\ if somebody could help me to understand what is about !!!!!\n\ in fact I need to have flag_button_valide_setdefault =False\n\ and the valid button set with default response like case of flag==True') response = demo.run() if response == Gtk.ResponseType.OK: print("OK button clicked") elif response == Gtk.ResponseType.CANCEL: print("Cancel button clicked") else: print("Dialog closed") |
une idée ? merci d'avance de votre aide. Mon souhait est d'agrémenter les boutons avec des petits dessins stockicone
+0
-0