1

フレームに 3 つのコントロールがあります -

  1. 従業員テーブルからの従業員名のリストを含むリスト ボックス。
  2. 新しい従業員の名前を受け入れるテキスト ボックス
  3. コマンド ボタンをクリックすると、employee テーブルに新しい名前が挿入されます。

要件:

新しい行を挿入した後に送信ボタンを押すと、リスト ボックスが新しい名前で自動的に更新されます。

このタスクを達成するにはどうすればよいですか?

コントロールを作成し、クリックイベントをバインドして行を挿入することに成功しました。しかし、リスト ボックスを更新できません。

事前にご協力いただきありがとうございます。

4

1 に答える 1

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()
于 2013-03-25T21:41:40.777 に答える