By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,095 Members | 1,586 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,095 IT Pros & Developers. It's quick & easy.

Making items visible in wxPython wxListCtrl

P: n/a
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=w xLIST_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
Jul 18 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Piet wrote:
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

Jul 18 '05 #2

P: n/a
Piet wrote:
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=w xLIST_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):
self.Lctrl.InsertColumn(i,"Column"+str(i),format=w xLIST_FORMAT_LEFT,width=100)
self.Lctrl.SetStringItem(i,1,"Hi")
self.Lctrl.SetStringItem(i,2,"there")
self.Lctrl.SetItemData(i,1)


# 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



Jul 18 '05 #3

P: n/a
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
Jul 18 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.