Seite 1 von 1

Problem mit wx.ListCtrl

Verfasst: Mittwoch 14. Mai 2008, 16:36
von roschi
hallo,

ich habe ein kleines problem mit wx.ListCtrl():

ich moechte, dass bei dem aktivieren eines eintrags eines wx.ListCtrl's der name des ausgewaehlten eintrags geprintet wird. das habe ich versucht so zu loesen:

Code: Alles auswählen

import wx

class FileList(wx.ListCtrl):
  def __init__(self, data, parent, pos, size):
    wx.ListCtrl.__init__(self, parent, -1, pos, size, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VIRTUAL)
    self.data = data
    self.SetItemCount(len(self.data))

    columns = ["File", "Size"]
    for col, text in enumerate(columns):
      self.InsertColumn(col, text)

    self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.activated, self)

  def activated(self, event):
    print self.GetItemText(event.GetItem())

  def OnGetItemText(self, item, col):
    data = self.data[item]
    return data[col]

class Frame(wx.Frame):
  def __init__(self):
    wx.Frame.__init__(self, None, -1, "Window", size=(600,400))
    self.panel = wx.Panel(self, -1)
    self.path_display = wx.TextCtrl(self.panel, -1, pos=(0, 0), size=(300, 20), style=wx.TE_READONLY | wx.TE_RICH2)
    path = "/"
    self.path_display.write("Path: " + path)
    self.data = [("..", ""), ("Alpha", "80 Byte"), ("Beta", "7 MB")]
    self.filelist = FileList(self.data, self.panel, pos=(0, 20), size=(300, 300))

app = wx.PySimpleApp(False)
frame = Frame()
frame.Show()
app.MainLoop()
jetzt habe ich aber das problem, dass er mir beim printen einen fehler ausgibt, mit dem ich aber leider nichts anfangen kann.

ich hoffe ihr koennt mir weiterhelfen! :?

mfg
roschi

Verfasst: Mittwoch 14. Mai 2008, 16:58
von martin101986
Hallo roschi,

folgendes Lösungen:

Code: Alles auswählen

def activated(self, event):
    print event.GetText()
oder

Code: Alles auswählen

def activated(self, event): 
    print self.GetItemText(event.GetIndex())
Ich glaub das hilft dir weiter.

Grüße
Martin

Verfasst: Mittwoch 14. Mai 2008, 17:04
von roschi
hallo martin101986,

danke fuer die antwort!

es funktioniert.

mfg
roschi

PS: ich moechte mich nochmal ganz herzlich fuer die vielen hilfreichen tipps, die ich in diesem forum schon erhielt bedanken!