Hallo alle,
bin weder bei google, den gtk.referenzen, den gtk.tutorials noch im Forum fündig geworden und das Problem kostet mich schon so manchen Nerv. ':evil:'
Irgendwie sitzte ich wohl auf der Leitung! ':)'
Ich habe eine einfach liststore(int, str, str, float)
Kann ich in einer zugehörigen treeview die Spalten auch rechtsbündig formatieren und die floats auf zwei Nachkommastellen stutzen?
Danke für jeden Hinweis, wo ich weitersuchen könnte.
Werner
Formatierung bei gtk.CellRenderertext()
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
@gtk habe ich keine Ahnung, aber wenn du die Werte in das Dings schreibst kannst du ja mit
den Wert hinterlegen. 2. Stellig 
Code: Alles auswählen
'%.2f' % myvalue

-
- User
- Beiträge: 12
- Registriert: Freitag 26. Mai 2006, 11:18
Ja, so mache ich das bis jetzt auch...DatenMetzgerX hat geschrieben:@gtk habe ich keine Ahnung, aber wenn du die Werte in das Dings schreibst kannst du ja mit
den Wert hinterlegen. 2. StelligCode: Alles auswählen
'%.2f' % myvalue
Aber irgendwie dachte ich, es gibt eine elegantere Lösung.

Folgendes habe ich noch gefunden:
cell.set_property('text', '%.2f' % (cpu * 100.0))
unter:
https://core.fluendo.com/flumotion/trac ... y?rev=3761
Scheint ein ganz nettes Programm zu sein. Muss mir erst noch Zeit nehmen, es in aller Ruhe anzusehen.
Jedenfalls ist mir das Prinzip noch nicht ganz klar???
Meine bisherige Vorstellung ist, Treeview ist eine Form, in die ich mittels Treestore oder Liststore dann die Daten reingiese. Mir ist schon klar, dass ich wahrscheinlich etwas zu kurz greife. Und die Möglichkeit, die sich auftut, die jeweilige Cell-Formatierung individuell nach dem jeweiligen Inhalt zu gestallten, scheint ja toll zu sein. Nur begreifen tu' ich's im Moment noch nicht so ganz.
Wahrscheinlich gehört das mit der gtk.JUSTIFY_RIGHT in die selbe Ecke.
Aber danke jedenfalls für den Tip!

-
- User
- Beiträge: 12
- Registriert: Freitag 26. Mai 2006, 11:18
Hallo nochmal...
manchmal muss man einfach mal drüber reden oder schreiben, um wieder Mut zu bekommen, nochmal genauer hinzusehen...
Hier also eine Teillösung (Dank an die Leute aus dem oben erwähnten Link):
Wobei self.cell5 = gtk.CellRendererText() mein Cell-Renderer ist.
Ich hole mir also mit wert = ... aus meinem Model (liststore) mit iter aus der 4. Spalte den Wert. Dann weise ich in der nächsten Zeile die Formatierung zu und kann dann der self.spalte5 (was meine treeviewcolumn ist) die definierte Funktion zuweisen.
Und siehe da, es geht!
Und das schöne, in der Funktion kann man nach belieben, anhand des Werts der Zelle die Formatierung ändern. Also z.B. für negative Werte einen roten Vordergrund wählen usw.! Schön!
Jetzt muss ich nur noch rauskriegen, wie ich statt der engl. Dezimalformatierung die deutsche hinkriege...
manchmal muss man einfach mal drüber reden oder schreiben, um wieder Mut zu bekommen, nochmal genauer hinzusehen...

Hier also eine Teillösung (Dank an die Leute aus dem oben erwähnten Link):
Code: Alles auswählen
def type_col_datafunc(column, cell, model, iter):
wert = model.get_value(iter, 4)
self.cell5.set_property('text', '%0.2f' % (wert))
self.spalte5.set_cell_data_func(self.cell5, type_col_datafunc)
Ich hole mir also mit wert = ... aus meinem Model (liststore) mit iter aus der 4. Spalte den Wert. Dann weise ich in der nächsten Zeile die Formatierung zu und kann dann der self.spalte5 (was meine treeviewcolumn ist) die definierte Funktion zuweisen.
Und siehe da, es geht!

Und das schöne, in der Funktion kann man nach belieben, anhand des Werts der Zelle die Formatierung ändern. Also z.B. für negative Werte einen roten Vordergrund wählen usw.! Schön!
Jetzt muss ich nur noch rauskriegen, wie ich statt der engl. Dezimalformatierung die deutsche hinkriege...
Vielleicht hilft dir das weiter: http://www.python-forum.de/topic-371.htmlwscharinger hat geschrieben:[...]
Jetzt muss ich nur noch rauskriegen, wie ich statt der engl. Dezimalformatierung die deutsche hinkriege...
lg
-
- User
- Beiträge: 12
- Registriert: Freitag 26. Mai 2006, 11:18
Ja, sehr interessant! Danke für den Tip!XtraNine hat geschrieben:Vielleicht hilft dir das weiter: http://www.python-forum.de/topic-371.htmlwscharinger hat geschrieben:[...]
Jetzt muss ich nur noch rauskriegen, wie ich statt der engl. Dezimalformatierung die deutsche hinkriege...
lg
Hi,
echte Rechtsbündigkeit bis genau an den rechten Rand habe ich bisher nicht hinbekommen - nur Rechts-adjustment - und zwar mit CellRenderText<object>.set_property('xalign', 1.0), was es natürlich eigentlich komplett tun sollte.
cell_data_funcs auch noch dafür zu verwenden, ist mir zu kank. Für mich sieht es so aus, als würde gtk in jeder Spalte rechts immer genau den Platz freilassen, den die Sortier-Richtungsanzeiger in den Spaltenheadern ggf. benötigen.
Soll man das noch einen schweren Mangel nennen oder einen Bug ? Einer von vielen in gtk.TreeView, der aus meiner Sicht knapp alpha-Status erreicht hat. 12 Stunden habe ich neulich daran gesessen, um nur hinzukriegen, Spalten durch Färbung markieren zu können - dies wieder über cell_data_funcs - und benötigte einen üblen Workaround um diese cell_data_funcs dann auf 'cursor-changed' auch anzuschmeißen. Dafür brauchte dann jede Spalte ihren eigenen CellRenderer, was vorher nicht so war.
Die Doku ist ganz katastrophal. Nirgends steht z.B., dass gtk.TreeView bei solchen Sachen seine Farben offenbar mit der als base[gtk.STATE_NORMAL] gesetzten Farbe zusammenmischt.
Viel Glück allen gtk-Usern, Joost
echte Rechtsbündigkeit bis genau an den rechten Rand habe ich bisher nicht hinbekommen - nur Rechts-adjustment - und zwar mit CellRenderText<object>.set_property('xalign', 1.0), was es natürlich eigentlich komplett tun sollte.
cell_data_funcs auch noch dafür zu verwenden, ist mir zu kank. Für mich sieht es so aus, als würde gtk in jeder Spalte rechts immer genau den Platz freilassen, den die Sortier-Richtungsanzeiger in den Spaltenheadern ggf. benötigen.
Soll man das noch einen schweren Mangel nennen oder einen Bug ? Einer von vielen in gtk.TreeView, der aus meiner Sicht knapp alpha-Status erreicht hat. 12 Stunden habe ich neulich daran gesessen, um nur hinzukriegen, Spalten durch Färbung markieren zu können - dies wieder über cell_data_funcs - und benötigte einen üblen Workaround um diese cell_data_funcs dann auf 'cursor-changed' auch anzuschmeißen. Dafür brauchte dann jede Spalte ihren eigenen CellRenderer, was vorher nicht so war.
Die Doku ist ganz katastrophal. Nirgends steht z.B., dass gtk.TreeView bei solchen Sachen seine Farben offenbar mit der als base[gtk.STATE_NORMAL] gesetzten Farbe zusammenmischt.
Viel Glück allen gtk-Usern, Joost