Gå til innhold

Problemer med set_default_response() på dialogboks [PYTHON] [GTK]


Anbefalte innlegg

Hei! Jeg har følgende funksjon som håndterer klikk på en knapp, noe som gjøres ved å sprette opp en dialogboks med en gtk.Entry. Jeg ønsker at når brukeren trykker "enter" på tastaturet så skal gtk.RESPONSE_OK sendes, på samme måte som når brukeren flytter fokus/markøren til "OK" og trykker.

 

Dessverre fungerer ikke dette...

 

Den interessante biten omhandler "dia", like under "while True":

   def event_toolbutton_geomInstanceNewButton(self, widget, event, data=None):
       print "MainWindow::event_toolbutton_geomInstanceNewButton()"

       name = ""

       while True:
           dia = gtk.Dialog("Please enter name of new geometry instance:", self.window,
                            gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                            (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                             gtk.STOCK_OK, gtk.RESPONSE_OK))
           dia.set_default_response(gtk.RESPONSE_OK)
           nameBox = gtk.Entry()
           nameBox.set_text(name)
           nameBox.show()
           dia.vbox.pack_start(nameBox)
           dia.show_all()

           response = dia.run()
           name = nameBox.get_text()

           dia.destroy()

           if response == gtk.RESPONSE_OK:
               #Check for whitespace
               print "got: \"" + name + "\""
               if " " in name:
                   mDia = gtk.MessageDialog(self.window,
                                            gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                                            gtk.MESSAGE_ERROR, gtk.BUTTONS_OK,
                                            "Name cannot contain whitespace")
                   mDia.run()
                   mDia.destroy()
               #OK, try to make the folder..
               else:
                   try:
                       self.addGeom(name)
                       break #Done!
                   except AcdOptiGuiException_guiMain_nameTaken:
                       #Nope, try again
                       print "got: \"" + name + "\""
                       mDia = gtk.MessageDialog(self.window,
                                                gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                                                gtk.MESSAGE_ERROR, gtk.BUTTONS_OK,
                                                "Name already in use")
                       mDia.run()
                       mDia.destroy()
                       continue;
           #Response cancel or close
           else:
               break


Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...