2011-07-01 6 views
0

電話帳を表示するにはListBoxが必要です。そのため、リストボックスにデータをバインドするには、phone.howなどの各リスト項目の上部に名前を、リストの下部に数字を表示する必要があります。複数行作成方法wx.ListBox

リストビュー

に2つのカラムを持つsqlite3のカーソルをバインドする方法を

cur.execute("select fname from tblsample1 order by fname") 
    names = [str(item[0]) for item in cur.fetchall()] 
    lvnames=wx.ListBox(panel,-1,(10,40),(210,180),names, wx.LB_SINGLE) 

以下のように

今私はので、私はwx.ListBoxマウスクリックイベント(ないEVT_LISTBOX を必要とする単一行とリストボックスを作りました私はマウスクリックイベントが必要です)

答えて

3

HtmlListBoxを使用してください。ここでは始めるための少しの例があります。

import wx 


class PhoneNumbers(wx.HtmlListBox): 
    def __init__(self, parent): 
     wx.HtmlListBox.__init__(self, parent) 
     self.data = [ 
      ("Foo", "3452-453"), 
      ("Bar", "5672-346"), 
     ] 
     self.SetItemCount(len(self.data)) 

    def OnGetItem(self, n): 
     return "<b>%s</b><br>%s" % self.data[n] 

    def add_number(self, name, number): 
     self.data.append((name, number)) 
     self.SetItemCount(len(self.data)) 
     self.Refresh() 


class Frame(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, size=(200, 400)) 

     self.numbers = PhoneNumbers(self) 
     self.contact_name = wx.TextCtrl(self) 
     self.contact_number = wx.TextCtrl(self) 
     self.add_btn = wx.Button(self, label="Add contact") 

     self.Sizer = wx.BoxSizer(wx.VERTICAL) 
     self.Sizer.Add(self.numbers, 1, wx.EXPAND) 
     self.Sizer.Add(wx.SearchCtrl(self), 0, wx.EXPAND) 
     self.Sizer.Add(wx.StaticText(self, label="Name"), 0, wx.TOP, 10) 
     self.Sizer.Add(self.contact_name) 
     self.Sizer.Add(wx.StaticText(self, label="Number"), 0, wx.TOP, 5) 
     self.Sizer.Add(self.contact_number) 
     self.Sizer.Add(self.add_btn, 0, wx.ALL, 10) 

     self.numbers.Bind(wx.EVT_LISTBOX, self.OnSelectNumber) 
     self.add_btn.Bind(wx.EVT_BUTTON, self.OnAddNumber) 

    def OnSelectNumber(self, event): 
     name, number = self.numbers.data[event.Selection] 
     self.contact_name.Value = name 
     self.contact_number.Value = number 

    def OnAddNumber(self, event): 
     self.numbers.add_number(
      self.contact_name.Value, 
      self.contact_number.Value 
     ) 


app = wx.PySimpleApp() 
app.TopWindow = f = Frame() 
f.Show() 
app.MainLoop() 
+0

HtmlListBoxに2つのTextCtrlを追加する方法を教えてください? –

+0

ListBoxを編集に使用することはできません。そのためにはwxGridを調べてください。 –

+0

HtmlListBoxに2つのwx.StaticTextを追加する方法「ありがとうございました」 –

1

あなたは質問を言い直すべきです、私はこの権利があるかどうかわかりません。

あなただけのListBoxに2つの行を表示する必要がある場合は、単に\nを使用することができます。

cur.execute("select fname,number from tblsample1 order by fname") 
entries = [str(item[0])+'\n'+str(item[1]) for item in cur.fetchall()] 

「クリック」イベントを取得するには、あなたはあなたのwx.ListBoxwx.LC_SINGLE_SELのスタイルを設定カントと選択イベントをキャッチwx.EVT_LIST_ITEM_SELECTED

+0

私はfnameには太字で表示される必要があり、トニRuzaので述べたように、あなたは 'HtmlListBox'で行くべきnumber.'Thank You' –

+0

よりも大きくする必要がある必要があります。デモを見て、有望に見える。 – any1

+0

HtmlListBoxデモ –

関連する問題