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