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
Einbinden von Check/Uncheck in CustomTreeCtrl[gelöst]
Kannst du mal den Namen von der Datei in der Demo sagen
und wird am Anang von image oder images importiert?
und wird am Anang von image oder images importiert?
the more they change the more they stay the same
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
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
wie du check oder radio buttons einbindest, keine Ahnung!
am Anfang des Skripts wird images importiert
images sind bilder die mit Hilfe von wxPython zu .py Datein gemacht wurden.
um das mit eigenen Images zu machen:
verwenden tut man dann das Ganze per (z.B.):
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
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
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())
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)
[...]
//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
the more they change the more they stay the same
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:
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
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:
Code: Alles auswählen
SetImageList(self.ImageList)
Code: Alles auswählen
SetImageListCheck(16,16,self.ImageList)
Code: Alles auswählen
SetItemImage(self, item, image, which=TreeItemIcon_Normal)
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
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
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
Code: Alles auswählen
self.AppendItem(child, "item", ct_type=1)