2013-03-25 39 views
1

我有3個控制在我的框架 -wxPython的回調

  1. 有從僱員表的僱員名列表的列表框。
  2. 接受新員工姓名的文本框
  3. 單擊時的命令按鈕將在employee表中插入一個新名稱。

要求:

一旦我按插入新行列表框後,提交按鈕應自動使用新的名稱刷新。

如何完成此任務?

我成功地能夠創建控件並綁定點擊事件並插入一行。但無法刷新列表框。

感謝您的幫助提前。

回答

1

您應該使用ListBox的SetItems方法:

import wx 

######################################################################## 
class MyPanel(wx.Panel): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self, parent): 
     """Constructor""" 
     wx.Panel.__init__(self, parent) 

     self.choices = ["George Lucas"] 
     self.lbox = wx.ListBox(self, choices=self.choices) 
     self.new_emp = wx.TextCtrl(self) 
     addBtn = wx.Button(self, label="Add Employee") 
     addBtn.Bind(wx.EVT_BUTTON, self.addEmployee) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(self.lbox, 0, wx.ALL|wx.EXPAND, 5) 
     sizer.Add(self.new_emp, 0, wx.ALL|wx.EXPAND, 5) 
     sizer.Add(addBtn, 0, wx.ALL, 5) 
     self.SetSizer(sizer) 

    #---------------------------------------------------------------------- 
    def addEmployee(self, event): 
     """""" 
     emp = self.new_emp.GetValue() 
     self.choices.append(emp) 
     self.lbox.SetItems(self.choices) 
     self.new_emp.SetValue("") 

######################################################################## 
class MainFrame(wx.Frame): 
    """""" 

    #---------------------------------------------------------------------- 
    def __init__(self): 
     """Constructor""" 
     wx.Frame.__init__(self, None, title="Employee") 
     panel = MyPanel(self) 
     self.Show() 

#---------------------------------------------------------------------- 
if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MainFrame() 
    app.MainLoop() 
+0

非常感謝.. – user1050619 2013-03-27 20:44:06