以下のコードを実行してください。ここでは、1 つのフレームにボタン addscript があります。ボタンをクリックすると、表示されているデータのコンボボックスで構成される別のフレームが開きます。別のフレームにあります
誰でもこれで私を助けてくれますか
前もって感謝します
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()