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