Formatierung bei gtk.CellRenderertext()

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
wscharinger
User
Beiträge: 12
Registriert: Freitag 26. Mai 2006, 11:18

Freitag 20. Oktober 2006, 17:15

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
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Freitag 20. Oktober 2006, 19:23

@gtk habe ich keine Ahnung, aber wenn du die Werte in das Dings schreibst kannst du ja mit

Code: Alles auswählen

'%.2f' % myvalue
den Wert hinterlegen. 2. Stellig ;)
wscharinger
User
Beiträge: 12
Registriert: Freitag 26. Mai 2006, 11:18

Freitag 20. Oktober 2006, 20:21

DatenMetzgerX hat geschrieben:@gtk habe ich keine Ahnung, aber wenn du die Werte in das Dings schreibst kannst du ja mit

Code: Alles auswählen

'%.2f' % myvalue
den Wert hinterlegen. 2. Stellig ;)
Ja, so mache ich das bis jetzt auch...
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! :-) WS
wscharinger
User
Beiträge: 12
Registriert: Freitag 26. Mai 2006, 11:18

Freitag 20. Oktober 2006, 21:10

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):

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)
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! :D
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...
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Donnerstag 9. November 2006, 19:32

wscharinger hat geschrieben:[...]
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.html

lg
wscharinger
User
Beiträge: 12
Registriert: Freitag 26. Mai 2006, 11:18

Dienstag 14. November 2006, 10:20

XtraNine hat geschrieben:
wscharinger hat geschrieben:[...]
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.html

lg
Ja, sehr interessant! Danke für den Tip!
joost
gelöscht
Beiträge: 134
Registriert: Sonntag 29. April 2007, 13:28

Sonntag 29. April 2007, 15:08

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
Antworten