【问题标题】:How to get the button object created by CreateButtonSizer (or CreateSeparatedButtonSizer) in wxPythonwxPython中如何获取CreateButtonSizer(或CreateSeparatedButtonSizer)创建的按钮对象
【发布时间】:2013-08-15 19:45:02
【问题描述】:

我觉得这应该很简单,但我找不到任何东西。我有一个非常简单的对话框,有两个文本控件。然后我使用 CreateSeparatedButtonSizer 方法创建一个 OK/CANCEL 按钮大小调整器。

问题是,我想尝试根据文本控件中条目的某些条件启用/禁用“确定”按钮。换句话说,在将有效条目输入到文本控件之前,我希望禁用 OK 按钮。我似乎找不到任何关于如何引用按钮的信息,而且我宁愿不手动创建按钮,以便对话框保持平台“不可知论”。

小示例代码:

class MyDialog(wx.Dialog):
    def __init__(self, parent, title):
        wx.Dialog.__init__(self, parent=parent, title=title)

        # Grid sizer for text controls and labels:
        grid = wx.GridBagSizer(2,2)

        # Add the input fields:
        grid.Add(wx.StaticText(self, label="Field 1: "),pos=(0,0))
        self.fld1 = wx.TextCtrl(self, value="", size=(70,-1))
        grid.Add(self.fld1, pos=(0,1))
        grid.Add(wx.StaticText(self, label="Field 2: "),pos=(1,0))
        self.fld2 = wx.TextCtrl(self, value="", size=(70,-1))
        grid.Add(self.fld2, pos=(1,1))

        # Buttonsizer:
        btns = self.CreateSeparatedButtonSizer(wx.OK|wx.CANCEL)

        # Lay it all out:
        mainSizer = wx.BoxSizer(wx.VERTICAL)
        mainSizer.Add(grid, 1, wx.ALL|wx.EXPAND)
        mainSizer.Add(btns, 0, wx.ALL|wx.EXPAND)
        self.SetSizer(mainSizer)
        self.Fit()

所以,我想将一个方法绑定到文本控件,以检查输入是否有效。如果是,那么确定按钮将被启用,如果不是,那么它应该被禁用。有没有办法做到这一点?

谢谢!

【问题讨论】:

    标签: python user-interface wxpython


    【解决方案1】:

    “确定”按钮的 ID 为 wx.ID_OK。如果您想从 MyDialog 类中找到它,您可以尝试 wx.FindWindowById(wx.ID_OK, self)。 如果您尝试从MyDialog 类之外引用按钮,则需要使用MyDialog 的实例作为第二个参数。 前任。

    dialog_instance = MyDialog()
    ok_button = wx.FindWindowById(wx.ID_OK, dialog_instance)
    

    这里有一些关于 FindWindowById 的文档 http://xoomer.virgilio.it/infinity77/wxPython/wxFunctions.html#FindWindowById

    【讨论】:

    • 工作就像一个魅力!正是我想要的! 未来读者注意“d”是小写的:wx.FindWindowById()。否则,完全按照杰森的回答中的描述工作。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2023-02-26
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    相关资源
    最近更新 更多