Making items visible in wxPython wxListCtrl


P

Piet

Hi there.
I am trying to display tabular data in a wxListCtrl. What I get from
the script below are only the headers, not the items themselves. The
documentation didn´t help me much; instead I was lost in ListItemId´s
and different possibilities of inserting items and strings. I am sure
the solution is only one step away, but I need somebody to point in
the direction. Heres the script:

from wxPython.wx import *
class MainWindow(wxFrame):
def __init__(self,parent,id,title):
wxFrame.__init__(self,parent,-1, title,
style=wxDEFAULT_FRAME_STYLE)
self.panel = wxPanel(self,-1)
self.Lctrl = wxListCtrl(self.panel,-1,size=(200,200),style =
wxLC_REPORT)
for i in range(2):
self.Lctrl.InsertColumn(i,"Column"+str(i),format=wxLIST_FORMAT_LEFT,width=100)
self.Lctrl.SetStringItem(i,1,"Hi")
self.Lctrl.SetStringItem(i,2,"there")
self.Lctrl.SetItemData(i,1)


app = wxPySimpleApp()
frame = MainWindow(None, -1, "List Control Test")
frame.Show(1)
app.MainLoop()

Best regards

Peter
 
Ad

Advertisements

G

Greg Krohn

Piet said:
Hi there.
I am trying to display tabular data in a wxListCtrl. What I get from
...

I hope this clears it up.


from wxPython.wx import *
class MainWindow(wxFrame):
def __init__(self,parent,id,title):
wxFrame.__init__(self,parent,-1, title,
style=wxDEFAULT_FRAME_STYLE)
self.panel = wxPanel(self,-1)
self.Lctrl = wxListCtrl(self.panel,-1,
size=(200,200),style =wxLC_REPORT)

# for i in range(2):
# self.Lctrl.InsertColumn(i, "Column"+str(i),
# format=wxLIST_FORMAT_LEFT,width=100)
# self.Lctrl.SetStringItem(i,1,"Hi")
# self.Lctrl.SetStringItem(i,2,"there")
# self.Lctrl.SetItemData(i,1)

self.Lctrl.InsertColumn(0, "Name")
self.Lctrl.InsertColumn(1, "ID")
self.Lctrl.InsertColumn(2, "Spam Level")

people = [["George", "3t4d3", "5"],
["Beth", "34g245", "3"],
["Zaphod", "424242", "42"]]

# Notice you use InsertStringItem for the first item
# in the row and then use SetStringItem for the rest
for index, (name, id, spam) in enumerate(people):
self.Lctrl.InsertStringItem(index, name)
self.Lctrl.SetStringItem(index, 1, id)
self.Lctrl.SetStringItem(index, 2, spam)


app = wxPySimpleApp()
frame = MainWindow(None, -1, "List Control Test")
frame.Show(1)
app.MainLoop()


> Best regards
>
> Peter

Ditto,
greg
 
M

moma

Piet said:
Hi there.
I am trying to display tabular data in a wxListCtrl. What I get from
the script below are only the headers, not the items themselves. The
documentation didn´t help me much; instead I was lost in ListItemId´s
and different possibilities of inserting items and strings. I am sure
the solution is only one step away, but I need somebody to point in
the direction. Heres the script:

from wxPython.wx import *
class MainWindow(wxFrame):
def __init__(self,parent,id,title):
wxFrame.__init__(self,parent,-1, title,
style=wxDEFAULT_FRAME_STYLE)
self.panel = wxPanel(self,-1)
self.Lctrl = wxListCtrl(self.panel,-1,size=(200,200),style =
wxLC_REPORT)
for i in range(2):
self.Lctrl.InsertColumn(i,"Column"+str(i),format=wxLIST_FORMAT_LEFT,width=100)
self.Lctrl.SetStringItem(i,1,"Hi")
self.Lctrl.SetStringItem(i,2,"there")
self.Lctrl.SetItemData(i,1)


app = wxPySimpleApp()
frame = MainWindow(None, -1, "List Control Test")
frame.Show(1)
app.MainLoop()

Best regards

Peter


Mixing rows and columns ?

for i in range(2):

# Create 2 columns
for i in range(2):
self.Lctrl.InsertColumn(i,"Column"+str(i),
format=wxLIST_FORMAT_LEFT,width=100)


# Add 6 rows of data
for i in range(6):
self.Lctrl.InsertStringItem(i,"Hi") # Col 0
self.Lctrl.SetStringItem(i,1,"there") # Col 1
self.Lctrl.SetItemData(i,1)



http://wiki.wxpython.org/index.cgi/ListControls


Cheers,
// moma
http://www.futuredesktop.org
 
Ad

Advertisements

P

Piet

Shame on me....
Looks like as if wanted to populate a non-existing column with data.
Anyway, now evrything is working properly. Many, many thanks! That helped me a lot.

Piet
 

Top