wxglade创建的“自定义”对话框中的确定/取消顺序

1 投票
1 回答
2101 浏览
提问于 2025-04-16 21:31

我注意到,在Windows和Linux系统下,标准对话框里的取消和确定按钮的顺序不一样。在Linux上,按钮的顺序是"[CANCEL] [OK]",而在Windows上是"[OK] [CANCEL]"。

我对标准对话框没有问题,但我的“自定义对话框”需要调整按钮的顺序,以便与操作系统保持一致。

我有一些疑问:

1.- 似乎有一个叫做wx.StdDialogButtonSizer的类,但我不太确定该怎么用。有没有人能提供一个简单的、可运行的示例?

还有一个“主要问题”:

2.- 我使用wxglade来“构建”对话框的代码,所以我不确定是否可以使用StdDialogButtonSizer。有没有办法在定义对话框时指定按钮的顺序,并在运行时检查按钮是否按照正确的顺序排列,如果没有的话,能否“交换”这两个按钮?

谢谢

1 个回答

5

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: 跨平台的确定/取消按钮顺序 或者 http://wxpython-users.1045709.n5.nabble.com/wx-StdDialogButtonSizer-and-wx-ID-SAVE-td2360032.html

不过,我不太确定在 Glade 中是否有办法做到这一点。

撰写回答