Seite 1 von 1
Einbinden von Check/Uncheck in CustomTreeCtrl[gelöst]
Verfasst: Mittwoch 28. Oktober 2009, 17:22
von Braindie
Hallo,
in der wxPython Demo ist es möglich in einem tree check/radio buttons einzubauen. Aus dem Democode werde ich leider nicht ganz schlau und eine Beispiel habe ich auch noch gefunden.
Mich würde interessieren wo und wie ich die Icons oder Bitmaps einbinde!
Vielleicht auch in der ImageList?
Vielleicht hat jemand von euch das schon mal gemacht und kann mir weiterhelfen.
Vielen Dank für Eure Mühe
Stefan
P.S.
CustomTreeCtrl liegt in
wx.lib.agw.customtreectrl
Verfasst: Donnerstag 29. Oktober 2009, 13:38
von Dav1d
Kannst du mal den Namen von der Datei in der Demo sagen
und wird am Anang von image oder images importiert?
Verfasst: Freitag 30. Oktober 2009, 11:00
von Braindie
Hi Dav1d,
Der Name der Datei lautet:
CustomTreeCtrl.py
Sie befindet sich bei mir unter:
wxPython2.8 Docs and Demos\demo\agw
In Python ist das ganze unter:
\Lib\site-packages\wx-2.8-msw-ansi\wx\lib\agw
zu finden.
Ich versuch da jetzt mal durchzusehen
Stefan
Verfasst: Freitag 30. Oktober 2009, 14:18
von Dav1d
wie du check oder radio buttons einbindest, keine Ahnung!
am Anfang des Skripts wird images importiert
Code: Alles auswählen
import wx
import string
import os
import sys
import wx.lib.colourselect as csel
[...]
import images
images sind bilder die mit Hilfe von wxPython zu .py Datein gemacht wurden.
um das mit eigenen Images zu machen:
Code: Alles auswählen
import sys, os, glob
from wx.tools import img2py
output = 'imags.py'
# get the list of PNG files
files = glob.glob('src-images/*.png')
# Truncate the inages module
open(output, 'w')
# call img2py on each file
for f in files:
# extract the basename to be used as the image name
name = os.path.splitext(os.path.basename(f))[0]
# encode it
if f == files[0]:
cmd = "-u -i -n %s %s %s" % (name, f, output)
else:
cmd = "-a -u -i -n %s %s %s" % (name, f, output)
img2py.main(cmd.split())
verwenden tut man dann das Ganze per (z.B.):
Code: Alles auswählen
import wx
import images
[...]
obmp = images.deutschland.GetBitmap() # deutschland ist der Name des Bildes in der .py Datei
bmp = wx.StaticBitmap(self, -1, obmp, (80, 50), (obmp.GetWidth(), obmp.GetHeight()))
sizer.Add(self.obenbmp, 1, wx.ALL, 10)
[...]
ich hoffe es hilft dir
//EDIT:
Wichtig! das wird unter Windows nicht funktionieren, damit das funktioniert musst du die img2py.py mit dieser:
http://trac.wxwidgets.org/attachment/ti ... /img2py.py ersetzten, Erklärung wieso gibts hier:
http://trac.wxwidgets.org/ticket/10899
Verfasst: Freitag 30. Oktober 2009, 15:45
von Braindie
So der Stand der Dinge,
das der import der images nur für die wxpython-demo ist, habe ich jetzt mitbekommen.
Ich umgehe dies und habe mir die checkbuttons in das aktuelle Verzeichnis kopiert und lade sie von dort.
Wie bei einem normalen Tree oder Liste muss man eine ImageList erzeugen und die gewünschten Buttons einladen.
Dann wird die Liste (ich sage mal ) aktiviert mit:
Für die Checkbuttons gibt es eine eigene Aktivierung:
Dann wird mit:
Code: Alles auswählen
SetItemImage(self, item, image, which=TreeItemIcon_Normal)
die Zuordnung geschaffen.
Und da stehe ich nun weil ich nicht weis wie ich den Checkbutton neben dem ganz normalen Image anlege.
Ich glaub das klingt jetzt ganz schön durcheinander, aber so ist es gerade in meinem Kopf .
Vielleicht hat einer noch eine zündende Idee. Darüber würde ich mich freuen. Ich bleibe dran.
Stefan
Verfasst: Sonntag 1. November 2009, 12:27
von Braindie
So ich hab mein Problem gelöst.
Beim einbinden der einzelnen Elemente in den Baum,
muss ein ct_type aufgeführt werden.
0 steht für standard
1 für checkbox
2 für radiobox
Stefan