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

时间:2017-09-10 06:06:01

标签: python events callback wxpython handler

我正在编写一个小型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。

1 个答案:

答案 0 :(得分:0)

你的意思是这样吗?

 File "C:\Users\X\AppData\Local\Programs\Python\Python35\lib\site-packages\trimesh\io\load.py", line 119, in load_mesh
    kwargs.update(mesh_loaders[file_type](file_obj,
KeyError: 'svg'

您不知道自己在这些方面的经验如何,您可能会发现变量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() 的这种描述很有用 https://pythontips.com/2013/08/07/the-self-variable-in-python-explained/