wxpython:如何从另一个 wx 对象的回调函数影响 wx 对象?

wxpython: How to influence wx objects from another wx object's callback function?

我目前正在编写一个小型 GUI,想知道如何从另一个回调函数中影响 wxpython 小部件的状态。

目前,我无法通过我的回调函数影响小部件,因为在回调函数中我的按钮小部件不会被定义。

例如,我想做的一件事是在 btnLoad 被按下时,btnSave 应该被启用(见下文)。

    btnSave = wx.Button(...)
    btnSave.Disable()

    btnLoad = wx.Button(...)

    self.Bind(wx.EVT_BUTTON, self.onBtnLoad, btnLoad)

def onBtnLoad(self, event):
    btnSolve.Enable()    # this is where I have issues. Obviously because btnSolve is undefined here.

提前致谢:)

P.S。抱歉,如果我说了一些奇怪的话,这是我编写用户界面和 wxpython 的第二天。

你的意思是这样的吗?

import wx

class ButtonFrame(wx.Frame):
    def __init__(self, value):
        wx.Frame.__init__(self,None)
        self.btn1 = wx.Button(self, -1, ("Clickable"))
        self.btn2 = wx.Button(self, -1, ("Not Clickable"))
        self.btnSizer = wx.BoxSizer(wx.HORIZONTAL)
        self.btnSizer.Add(self.btn1 , 0, wx.RIGHT, 10)
        self.btnSizer.Add(self.btn2 , 0, wx.RIGHT, 10)
        self.btn1.Bind(wx.EVT_BUTTON, self.OnPressA)
        self.btn2.Bind(wx.EVT_BUTTON, self.OnPressB)
        self.btn2.Disable()
        self.SetSizer(self.btnSizer)
        self.Centre()
        self.Show()

    def OnPressA(self,evt):
        self.btn1.SetLabel('Not Clickable')
        self.btn2.SetLabel('Clickable')
        self.btn2.Enable()
        self.btn1.Disable()
        self.Layout()

    def OnPressB(self,evt):
        self.btn2.SetLabel('Not Clickable')
        self.btn1.SetLabel('Clickable')
        self.btn1.Enable()
        self.btn2.Disable()
        self.Layout()

if __name__ == "__main__":
    app = wx.App()
    ButtonFrame(None)
    app.MainLoop()

不知道您在这些问题上的经验如何,您可能会发现对变量的描述 self 很有用。
https://pythontips.com/2013/08/07/the-self-variable-in-python-explained/