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

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Sonntag 14. September 2008, 14:25

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
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Sonntag 14. September 2008, 14:39

http://29a.ch/git/gitweb.cgi?p=x29a;a=b ... b=HEAD#l45

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

Gruss,
Jonas
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Sonntag 14. September 2008, 14:49

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 :)
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Sonntag 14. September 2008, 16:35

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?
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Sonntag 14. September 2008, 18:26

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
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
scrawl
User
Beiträge: 40
Registriert: Mittwoch 20. August 2008, 17:04
Kontaktdaten:

Sonntag 14. September 2008, 18:51

Jup, geht, danke :D
Antworten