2012-07-13 53 views
0

問題在這裏是一個片段與wx.ListCtrl

self.list_ctrl = wx.ListCtrl(self, size=(-1,100), 
        style=wx.LC_ICON|wx.LC_ALIGN_LEFT 
        ) 
    il = wx.ImageList(16,16,True) 
    png = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN,wx.ART_OTHER, (16,16)) 
    il.Add(png) 
    self.list_ctrl.AssignImageList(il,wx.IMAGE_LIST_NORMAL) 


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

    self.list_ctrl.InsertImageStringItem(0,"1",0) 
    self.list_ctrl.InsertImageStringItem(1,"2",0) 

我的問題是,圖標顯示,因爲我的風格把wx.LC_ALIGN_LEFT這是不應該的文本的頂部。我希望圖標顯示在文本的左側。

另一個問題是,我想每行一個元素。在我的代碼中,它幾乎就像每列一個元素。

任何人都可以幫助我解決這些問題嗎? 謝謝。

+0

我看你做不成問題。你需要在某處存儲'il'。 – 2012-07-13 17:48:46

+0

什麼是 「IL = wx.ImageList(16,16,真)」 – user1513192 2012-07-13 17:49:52

回答

3

縱觀wxPython的演示爲的ListCtrl,它看起來像他們使用SetImageList()而不是AssignImageList()。不知道有什麼區別。我沒有看到你插入任何文本的位置。您需要使用SetStringItem將文本放到我可以看到的其他列中。

編輯:代碼從wxPython的演示包,演示的ListCtrl:

self.il = wx.ImageList(16, 16) 

self.idx1 = self.il.Add(images.Smiles.GetBitmap()) 
self.sm_up = self.il.Add(images.SmallUpArrow.GetBitmap()) 
self.sm_dn = self.il.Add(images.SmallDnArrow.GetBitmap()) 

然後我們添加的數據/圖像小部件

def PopulateList(self): 
    if 0: 
     # for normal, simple columns, you can add them like this: 
     self.list.InsertColumn(0, "Artist") 
     self.list.InsertColumn(1, "Title", wx.LIST_FORMAT_RIGHT) 
     self.list.InsertColumn(2, "Genre") 
    else: 
     # but since we want images on the column header we have to do it the hard way: 
     info = wx.ListItem() 
     info.m_mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT 
     info.m_image = -1 
     info.m_format = 0 
     info.m_text = "Artist" 
     self.list.InsertColumnInfo(0, info) 

     info.m_format = wx.LIST_FORMAT_RIGHT 
     info.m_text = "Title" 
     self.list.InsertColumnInfo(1, info) 

     info.m_format = 0 
     info.m_text = "Genre" 
     self.list.InsertColumnInfo(2, info) 

    items = musicdata.items() 
    for key, data in items: 
     index = self.list.InsertImageStringItem(sys.maxint, data[0], self.idx1) 
     self.list.SetStringItem(index, 1, data[1]) 
     self.list.SetStringItem(index, 2, data[2]) 
     self.list.SetItemData(index, key) 
+0

self.list_ctrl.InsertImageStringItem(0, 「1」,0),我稱他們爲數字 「1」 和 「2」 – user1513192 2012-07-13 17:47:23

+0

當我使用SetImageList相反,照片藥房。 – user1513192 2012-07-13 17:48:27

+0

對不起,我的意思是,消失 – user1513192 2012-07-13 17:59:08

相關問題