Sto eseguendo il debug di un bug di esperienza utente in un programma PyGTK (anche se probabilmente la domanda sarà applicabile anche a GTK) e improvvisamente mi sono reso conto che il bug è "attivato" a seconda dell'utente che esegue il programma.Perché l'ordine dei pulsanti e il pulsante predefinito cambiano con l'utente che esegue un programma PyGTK/GTK?
ho ridotto il problema a uno script molto semplice in PyGTK:
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_size_request(250, 100)
self.set_position(gtk.WIN_POS_CENTER)
self.connect("destroy", gtk.main_quit)
self.set_title("Message dialogs")
ques = gtk.Button("Question")
self.add(ques)
ques.connect("clicked", self.on_ques)
self.show_all()
def on_ques(self, widget):
md = gtk.MessageDialog(self,
gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION,
gtk.BUTTONS_YES_NO, "Are you sure to quit?")
md.run()
md.destroy()
PyApp()
gtk.main()
Quando eseguo questo sulla mia macchina come me, ho questa finestra di dialogo:
Are you sure to quit?
<Yes> No
Quando eseguo questo su la mia scatola come radice, ottengo questa finestra di dialogo:
Are you sure to quit?
<No> Yes
entrambi gli utenti ettari Ho lo stesso file .gtkrc-2.0, e io uso KDE e non ho nulla di ovvio nella directory nascosta relativa a GTK nel mio homedir, quindi non riesco a capire da dove viene questa preferenza.
Prima che qualcuno suggerisca md.set_default_response(), non è esattamente quello che voglio. Ho provato a impostare md.set_default_response (gtk.RESPONSE_YES) dopo aver creato la finestra di dialogo, e sì, il pulsante "Sì" viene selezionato, ma ancora il "No" è stampato sulla sinistra.
Mi piacerebbe capire da dove proviene questo comportamento e provare a risolverlo una volta per tutte.