Заказ OK/CANCEL в пользовательских диалогах, созданных с помощью wxglade

Я заметил, что в стандартных диалогах некоторые кнопки ОТМЕНА и ОК расположены в разном порядке под Windows и под Linux. В Linux вы получаете [ОТМЕНА] [ОК], а в Windows — [ОК] [ОТМЕНА].

У меня нет проблем со стандартными диалогами, но затем мои пользовательские диалоги должны быть настроены так, чтобы они соответствовали тому же порядку, в зависимости от операционной системы.

Мои сомнения:

1. Кажется, существует класс с именем wx.StdDialogButtonSizer, но я не уверен, как его следует использовать. Может ли кто-нибудь опубликовать любой рабочий простой/рабочий пример?

И Главный вопрос:

2. Я использую wxglade для создания кода для диалогов, поэтому я не уверен, что смогу использовать StdDialogButtonSizer. Есть ли способ определить диалог с заданным порядком и во время выполнения проверить, следуют ли кнопки правильному порядку, и поменять местами эти два виджета, если нет?

Спасибо


person sromero    schedule 14.07.2011    source источник


Ответы (1)


StdDialogButtonSizer определенно подходит для пользовательских диалогов. Вот простой пример:

import wx

########################################################################
class SampleDialog(wx.Dialog):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Dialog.__init__(self, parent, title="Tutorial")

        btnOk = wx.Button(self, wx.ID_OK)
        btnCancel = wx.Button(self, wx.ID_CANCEL)

        btnSizer = wx.StdDialogButtonSizer()
        btnSizer.AddButton(btnOk)
        btnSizer.AddButton(btnCancel)
        btnSizer.Realize()
        self.SetSizer(btnSizer)

#----------------------------------------------------------------------
if __name__ == '__main__':
    app = wx.App(False)
    dlg = SampleDialog(None)
    dlg.ShowModal()

См. также WxPython: кросс-платформенный способ согласования Ok/ Отменить заказ кнопки или http://wxpython-users.1045709.n5.nabble.com/wx-StdDialogButtonSizer-and-wx-ID-SAVE-td2360032.html

Я не знаю, есть ли способ сделать это в Glade или нет.

person Mike Driscoll    schedule 14.07.2011
comment
Спасибо за ответ и за пример. Моя проблема в том, что я создаю графический интерфейс с помощью wxglade, и, похоже, он не поддерживает добавление StdDialogButtonSizer (по крайней мере, я не знаю, как это сделать). Я проверю с опцией Добавить пользовательский виджет ... - person sromero; 14.07.2011
comment
Большинство сборщиков графического интерфейса wxpython, таких как Glade, поддерживают, к сожалению, ограниченное подмножество доступных элементов управления. Я обнаружил, что мне проще сгенерировать код, похожий на то, что мне нужно, а затем отредактировать его вручную. - person Velociraptors; 14.07.2011
comment
Я согласен с велоцирапторами. Это определенно один из способов. - person Mike Driscoll; 14.07.2011
comment
Привет @MikeDriscoll, я обнаружил эту проблему на основе вашего примера .com/questions/22486372/ - person gunzapper; 18.03.2014