Hello,
I am a wxpython newbie and would like some help on using custom classes to create and change widgets.
I have a program with 2 classes, each of which creates a panel with widgets. These panels are then added to the main frame of an application.
In one class I create a statictext label (dalabel). In another class I create a button (dabutton). I want to change the statictext label created in the first class with the button-click event created in the second class.
The following code produces the button-click error ' dalabel is not defined '.
#!/usr/bin/python
import wx
import time
class MakePanel1(wx.Panel):
def __init__(self, Parent, *args, **kwargs):
wx.Panel.__init__(self, Parent, *args, **kwargs)
self.dalabel = wx.StaticText(self, -1, " panel 1 label ")
self.bs1 = wx.BoxSizer(wx.HORIZONTAL)
self.bs1.Add(self.dalabel,0,wx.ALL,20)
self.SetSizer(self.bs1)
class MakePanel2(wx.Panel):
def __init__(self, Parent, *args, **kwargs):
wx.Panel.__init__(self, Parent, *args, **kwargs)
self.dabutton = wx.Button(self, label="panel 2 button")
self.dabutton.Bind(wx.EVT_BUTTON, self.daclick )
self.bs2 = wx.BoxSizer(wx.HORIZONTAL)
self.bs2.Add(self.dabutton,0,wx.ALL,20)
self.SetSizer(self.bs2)
def daclick(self, event=None):
dalabel.SetLabel(str(time.time()))
class DisFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.Panel1 = MakePanel1(self)
self.Panel2 = MakePanel2(self)
bs = wx.BoxSizer(wx.VERTICAL)
bs.Add(self.Panel1,1,wx.EXPAND);
bs.Add(self.Panel2,1,wx.EXPAND);
self.SetSizer(bs)
self.Fit()
if __name__ == '__main__':
app = wx.App()
frame = DisFrame(None)
frame.Show()
app.MainLoop()
What is the proper syntax for referencing the statictext object created in the MakePanel1 class whilst within the MakePanel2 class?
I would like to change the statictext label of the MakePanel1 class with the button-click event of the MakePanel2 class, but do not know how to reference this statictext object in order to change its properties.
I prefer to have the statictext and button widgets created in separate classes. Any help will be appreciated.
Thank you.