2012-04-14 6 views
1

Ich entwickle eine Anwendung, die eine große Datenbank von Elementen anzeigt.Wie scrollt man in Python zu einem ausgewählten Objekt in einer ScrollledListBox?

Es gibt auch eine Suchleiste, die es dem Benutzer erlaubt, diese Datenbank zu durchsuchen, anstatt durch jedes Element zu scrollen, um das zu finden, das sie benötigen. Wenn die Suche True zurückgibt (eine Übereinstimmung wurde gefunden), werden die benötigten Informationen in einem Textfeld und weiteren Optionen in einer anderen Listbox angezeigt (nicht gescrollt), aber die ScrolledListBox scrollt nicht automatisch zum ausgewählten Element, auch wenn ich selection_set() oder list_box.active().

Ich habe es! Ich musste den Befehl list_box.yview_scroll() verwenden! Das dauert 2 Argumente: 1) Die integer/Index von wo 2) Zeile für Zeile gehen oder durch Seiten (Einheiten oder SEITEN)

Aber ich tun, um die .siehe Methode finden, um effizienter zu sein!

+1

Posten Sie, was Sie versucht haben (und einige Antworten akzeptieren). – gary

+0

(Ich wusste nicht, dass Sie auf den Scheck klicken mussten, um die Antwort zu akzeptieren) Wie ich schon sagte: Ich habe versucht, die list_box.activate (index) sowie die list_boxselection_set (index) gab es eine mehr, aber ich kann es nicht erinnern. Index ist auch der Punkt, der ausgewählt werden muss. –

Antwort

0

Tkinter hat keine ScrolledListBox-Klasse. Können Sie genauer bestimmen, welche ScrollledListBox-Implementierung Sie verwenden?

Die scrollbaren Widgets in Tkinter haben normalerweise eine see Methode, die genug scrollt, um sicherzustellen, dass der übergebene Index sichtbar ist.

Im Kommentar zu dieser Antwort sagen Sie, dass Sie pmw.ScrolledListBox verwenden. Nach the documentation for the ScrolledListBox widget:

Außerdem werden Methoden aus der Klasse Tkinter.Listbox dieses megawidget zur List-Box-Komponente weitergeleitet.

Daher können Sie eine beliebige Methode für dieses Widget aufrufen, die Sie in einem Listbox-Widget aufrufen können. Wie ich bereits erwähnt, hat die Listbox Klasse eine see Methode, so sollten Sie in der Lage, wie etwas zu tun:

the_widget.see(index) 

Im obigen Beispiel index ist die Zeile in der Listbox die Sie sehen wollen.

+1

Ich verwende das Python-Mega-Widget-Modul (Pmw) dafür, und es ist wirklich eine ScrolledListBox. Mit Python 2.7 - –

+0

Danke für die Hilfe! –