Please run the below code and here i have a button addscript in one frame , onbutton click opens an other frame which consists of combobox of data as displayed.after selecting appropriate choice and click updateandclose button those values in combobox should be printed on the listctrl which is on other frame
cananyone help me out with this
Thanks in advance
import wx
########################################################################
class MyForm(wx.Frame):
#----------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "List Control Tutorial",size=(700, 400))
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
self.index = 0
self.list_ctrl = wx.ListCtrl(panel, size=(-1,200),
style=wx.LC_REPORT
|wx.BORDER_SUNKEN
)
self.list_ctrl.InsertColumn(0, 'Machine Name')
self.list_ctrl.InsertColumn(1, 'Sim Port')
self.list_ctrl.InsertColumn(2, 'Sim Script', width=125)
self.list_ctrl.InsertColumn(3, 'Status', width=150)
self.list_ctrl.InsertColumn(4, 'Status Detail', width=300)
btn = wx.Button(panel, label="Add Line")
btn.Bind(wx.EVT_BUTTON, self.add_line)
btn2 = wx.Button(panel,label = "Add Script")
btn2.Bind(wx.EVT_BUTTON, self.add_script)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.list_ctrl, 0, wx.ALL|wx.EXPAND, 5)
sizer.Add(btn, 0, wx.ALL|wx.CENTER, 5)
sizer.Add(btn2,0,wx.ALL|wx.CENTER, 5)
panel.SetSizer(sizer)
menu = wx.Menu()
#exit = menu.Append(-1, "Exit")
#self.Bind(wx.EVT_MENU, self.OnExit, exit)
menuBar = wx.MenuBar()
self.SetMenuBar(menuBar)
#wx.StaticText(self.m_panel1, -1,(25,25))
self.popupmenu = wx.Menu()
for text in "Start Stop Remove".split():
item = self.popupmenu.Append(-1, text)
self.Bind(wx.EVT_MENU, self.OnPopupItemSelected, item)
self.list_ctrl.Bind(wx.EVT_CONTEXT_MENU, self.ShowPopUp)
#self.list_ctrl.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.ShowPopUp)
#----------------------------------------------------------------------
def add_script(self, event):
# mp is item 2
self.new = NewWindow(parent=None, id=-1)
self.new.Show()
def add_line(self, event):
#line = "Line %s" % self.index
line = 'LDR2'
self.list_ctrl.InsertStringItem(self.index,line)
self.list_ctrl.SetStringItem(self.index, 1, "22000")
self.list_ctrl.SetStringItem(self.index, 2, "LF1-trk")
self.list_ctrl.SetStringItem(self.index, 3, "running")
self.list_ctrl.SetStringItem(self.index, 4, "last Status info received")
self.index += 1
def OnPopupItemSelected(self, event):
item = self.popupmenu.FindItemById(event.GetId())
text = item.GetText()
wx.MessageBox("You selected item '%s'" % text)
def ShowPopUp( self, event ):
#pos = self.list_ctrl.GetPosition()
pos = event.GetPosition()
pos = self.list_ctrl.ScreenToClient(pos)
self.list_ctrl.PopupMenu(self.popupmenu,pos)
event.Skip()
class NewWindow(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self, parent, id, 'New Window', size=(400,300))
#self.frame1 = MainWindow;
wx.Frame.CenterOnScreen(self)
panel = wx.Panel(self)
sizer = wx.GridBagSizer(5, 5)
text1 = wx.StaticText(panel, label="Machine")
sizer.Add(text1, pos=(2, 0), flag=wx.LEFT, border=10)
comboBox1Choices = [ u"LDR2", u"AT02" ]
# self.m_comboBox4 = wx.ComboBox( panel, wx.ID_ANY, u"Running", wx.DefaultPosition, wx.DefaultSize, m_comboBoxChoices, 0 )
self.comboBox1 = wx.ComboBox(panel,wx.ID_ANY,u"", wx.DefaultPosition, wx.DefaultSize, comboBox1Choices, 0 )
#comboBox1.SetSelection(1)
sizer.Add( self.comboBox1, pos=(2, 1), span=(1, 3), flag=wx.TOP|wx.EXPAND )
text2 = wx.StaticText(panel, label="Sim Port")
sizer.Add(text2, pos=(3, 0), flag=wx.LEFT|wx.TOP, border=10)
comboBox2Choices = [ u"22000", u"23000" ]
self.comboBox2 = wx.ComboBox(panel,wx.ID_ANY,u"", wx.DefaultPosition, wx.DefaultSize, comboBox2Choices, 0 )
sizer.Add( self.comboBox2, pos=(3, 1), span=(1, 3), flag=wx.TOP|wx.EXPAND )
text3 = wx.StaticText(panel, label="Sim Scripts")
sizer.Add(text3, pos=(4, 0), flag=wx.TOP|wx.LEFT, border=10)
comboBox3Choices = [ u"LF12-Ldr", u"LF1-Trk",u"CN1-Trk" ]
self.comboBox3 = wx.ComboBox(panel,wx.ID_ANY,u"", wx.DefaultPosition, wx.DefaultSize, comboBox3Choices, 0 )
sizer.Add( self.comboBox3, pos=(4, 1), span=(1, 3), flag=wx.TOP|wx.EXPAND )
text4 = wx.StaticText(panel, label="Status")
sizer.Add(text4, pos=(5, 0), flag=wx.TOP|wx.LEFT, border=10)
comboBox4Choices = [ u"Not Started", u"Running" ]
self.comboBox4 = wx.ComboBox(panel,wx.ID_ANY,u"", wx.DefaultPosition, wx.DefaultSize, comboBox4Choices, 0 )
sizer.Add( self.comboBox4, pos=(5, 1), span=(1, 3), flag=wx.TOP|wx.EXPAND )
self.button4 = wx.Button(panel, label="Update and Close")
sizer.Add(self.button4, pos=(7, 3))
sizer.AddGrowableCol(2)
panel.SetSizer(sizer)
self.button4.Bind(wx.EVT_BUTTON,self.onupdateandClose)
def onupdateandClose(self,event):
# self.index = 0
self.main = MyForm()
sc = self.comboBox1.GetSelection()
print sc
sd = self.comboBox1.GetString(sc)
print sd
#sa = self.main.m_staticText5.SetLabel(self.comboBox1.GetString(sc))
#sa = self.frame1.m_staticText4.SetLabel(self.comboBox1.GetString(sc))
#print sa
cb1 = self.comboBox1.GetValue()
#print sc
cb2 = self.comboBox2.GetValue()
cb3 = self.comboBox3.GetValue()
cb4 = self.comboBox4.GetValue()
#num_items = self.main.list_ctrl.GetItemCount()
#print num_items
num_items = 0
#line = "Line %s" % self.index
#print line
line = 'LDR2'
self.main.list_ctrl.InsertStringItem(num_items,line)
self.main.list_ctrl.SetStringItem(num_items, 1, 'gjg')
self.main.list_ctrl.SetStringItem(num_items, 2, str(cb2))
num_items += 1
self.Close()
def test(self, event):
self.new = NewWindow(parent=None, id=-1)
self.new.Show()
#----------------------------------------------------------------------
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()