Почему порядок кнопок и кнопки по умолчанию меняются, когда пользователь выполняет программу PyGTK/GTK?

I Я отлаживаю ошибку взаимодействия с пользователем в программе PyGTK (хотя вопрос, вероятно, будет применим и к GTK), и внезапно понял, что ошибка «запускается» в зависимости от пользователя, выполняющего программу.

Я сократил проблему до очень простого скрипта в 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()

Когда я запускаю это на своем компьютере от имени себя, я получаю следующее диалоговое окно:

Are you sure to quit?
    <Yes>   No

Когда я запускаю это на своем компьютере от имени root, я получаю следующее диалоговое окно:

Are you sure to quit?
     <No>   Yes

У обоих пользователей один и тот же файл .gtkrc-2.0, и я использую KDE, и в моем домашнем каталоге нет ничего очевидного скрытого каталога, связанного с GTK, поэтому я не могу понять, где он находится. предпочтение исходит из.

Прежде чем кто-то предложит md.set_default_response(), это не совсем то, что мне нужно. Я попытался установить md.set_default_response(gtk.RESPONSE_YES) после создания диалогового окна, и да, выбирается кнопка «Да», но слева все равно печатается «Нет».

Я хотел бы понять, откуда такое поведение, и попытаться исправить это раз и навсегда.

6
задан Ender 8 June 2012 в 00:17
поделиться