Seite 1 von 1

gtk.TreeView: Bei zuvielen Einträgen eine Scrollbar anzeigen

Verfasst: Sonntag 14. September 2008, 14:25
von scrawl
Hi,

sorry dass ich euch schon wieder nerven muss, aber find und find die Methode/Eigenschaft was auch immer nicht, mit der ich bei einer gtk.TreeView, wenn soviele Einträge da sind dass sie größer sind als das Fenster, nicht das Fenster größer wird sondern eine Scrollbar erscheint! (in PyGTK)
Bei meinem Programm sieht das im Moment so aus, und wenn noch mehr Einträge da sind, dann geht das Fenster sogar über den Bildschirm hinaus :(
Bild
Von anderen Programmen, z.B. Gwget und Rhythmbox, bin ich das so gewöhnt, dass in dem Fall eine Scrollbar erscheint, also so:
Bild
In der PyGTK Referenz habe ich auch nichts gefunden.

Jemand ne Idee? :?
MfG

Verfasst: Sonntag 14. September 2008, 14:39
von veers
http://29a.ch/git/gitweb.cgi?p=x29a;a=b ... b=HEAD#l45

Dann einfach:
box.pack_start(scrolled(treeview)) ;)

Gruss,
Jonas

Verfasst: Sonntag 14. September 2008, 14:49
von scrawl
veers hat geschrieben:http://29a.ch/git/gitweb.cgi?p=x29a;a=b ... b=HEAD#l45

Dann einfach:
box.pack_start(scrolled(treeview)) ;)

Gruss,
Jonas
Juhu, funktioniert :P :D
Dankeschön :)

Verfasst: Sonntag 14. September 2008, 16:35
von scrawl
Hmmm, mir fällt grad auf, ein Problem gibt's noch: Wenn ich nach unten scrolle, dann werden auch die Spalten-Überschriften weggescrollt :(
Kann man dem irgendwie abhelfen?

Verfasst: Sonntag 14. September 2008, 18:26
von Trundle
Das liegt daran, dass die Funktion einen TreeView in einen Viewport packt, obwohl ein TreeView von sich aus Scrolling unterstützt. Man könnte die Funktion eigentlich so umschreiben, dann müsste es funktionieren:

Code: Alles auswählen

def scrolled(widget, shadow=gtk.SHADOW_NONE):
    window = gtk.ScrolledWindow()
    window.set_shadow_type(shadow)
    window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
    if widget.set_scroll_adjustments(window.get_hadjustment(),
                                     window.get_vadjustment()):
        window.add(widget)
    else:
        window.add_with_viewport(widget)
    return window

Verfasst: Sonntag 14. September 2008, 18:51
von scrawl
Jup, geht, danke :D