Seite 1 von 1
wx / InsertStringItem
Verfasst: Samstag 5. Januar 2008, 01:22
von Hobbes Hobson
Code: Alles auswählen
class SListCtrl(wx.ListCtrl, listmix.ListCtrlAutoWidthMixin):
def __init__(self, parent):
wx.ListCtrl.__init__(
self, parent, -1,
style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES
)
listmix.ListCtrlAutoWidthMixin.__init__(self)
for i, desc in ((0, "Date"),(1, "Time"),(2, "__name__"),(3, "Type"),(4, "Descriction")):
self.InsertColumn(i,desc) #Spalten erzeugen
items = serverlog.DBControl().auslesen()
self.InsertStringItem(maxint, '')
Code: Alles auswählen
return _controls_.ListCtrl_InsertStringItem(*args, **kwargs)
PyAssertionError: C++ assertion "m_count == ListView_GetItemCount(GetHwnd())" failed at ..\..\src\msw\listctrl.cpp(1583) in wxListCtrl::InsertItem(): m_count should match ListView_GetItemCount
Ich kann den Fehler nicht deuten, bzw ich nicht warum das nicht klappt.
Und was mich auch interessiert, warum man an der stelle index_to_place_at maxint nimmt.
Vielen Dank schonmal im voraus.
Re: wx / InsertStringItem
Verfasst: Samstag 5. Januar 2008, 02:47
von gerold
Hobbes Hobson hat geschrieben:Ich kann den Fehler nicht deuten, bzw ich nicht warum das nicht klappt.
Und was mich auch interessiert, warum man an der stelle index_to_place_at maxint nimmt.
Hallo Hobbes Hobson!
Ich habe mir das Beispiel aus der Demo genommen und zum Testen leicht angepasst:
http://paste.pocoo.org/show/19439/
Das Beispiel funktioniert so. Bitte teste ob es auch bei dir funktioniert. Und was ist bei dir ``maxint``?
Ich habe im Quellcode nirgends dieses "index_to_place_at" gefunden. ``sys.maxint`` kann man nehmen um sich das mitzählen eines eigenen Index zu ersparen. Das ist alles. Wenn du es los werden möchtest, dann kannst du dir mit ``enumerate()`` einen Index mitgenerieren lassen.
Code: Alles auswählen
for index, stringitem in enumerate(["Hallo", "Welt"]):
....
mfg
Gerold

Verfasst: Samstag 5. Januar 2008, 12:58
von Hobbes Hobson
Hallo Gerold,
danke für deine Antwort. maxint ist in diesem Fall sys.maxint (from sys import maxint).
Das index_to_place_at habe ich aus dem wxPyWiki:
http://wiki.wxpython.org/ListControls
Ich hatte ebenfalls das Beispiel aus der Demo verwendet, aber es anscheinend falsch geändert. (Es lag am Panel)
Mit deinem Panel gehts es jetzt
Vielen Dank
Verfasst: Samstag 5. Januar 2008, 15:26
von Hobbes Hobson
Ich stell die Frage am besten hier:
In dieser GUI habe ich in der ersten Spalte Nummer (1,2,3...) stehen. Ich möchte diese nun sortieren. Das Problem ist nur, dass er die Werte als string ansieht (so wurden sie auch reingeschrieben) und dementsprechend 1,10,100,1000,1001,1002 .... ausgibt.
Wie bekomme ich hin, dass der das als int ansieht, bzw. wie schreibe ich eine zahl (int) in die Tabelle?
Verfasst: Samstag 5. Januar 2008, 15:42
von gerold
Hobbes Hobson hat geschrieben:1,10,100,1000,1001,1002 .... ausgibt.
Wie bekomme ich hin, dass der das als int ansieht, bzw. wie schreibe ich eine zahl (int) in die Tabelle?
Hallo Hobbes Hobson!
Am Einfachsten ist es, wenn du die Zahlen mit führenden Nullen in das ListCtrl schreibst. Alles Andere ist unnötiger Aufwand, wenn man nicht unbedingt darauf angewiesen ist, dass da "1", statt "0001" steht.
mfg
Gerold

Verfasst: Samstag 5. Januar 2008, 16:02
von Hobbes Hobson
Code: Alles auswählen
def get0(numbers):
maxi = max(numbers)
laenge = len(str(maxi))
liste = []
ausdr = '%%0%ii' % laenge
for i in numbers:
liste.append(ausdr % i)
return liste
naja was solls
Zwar unschön, aber Danke

Verfasst: Montag 4. Februar 2008, 18:52
von gerold
Hallo Hobbes Hobson!
Das könnte vielleicht etwas für dich sein:
http://www.python-forum.de/post-89336.html#89336
mfg
Gerold
