Scrollbar in Toplevel

Fragen zu Tkinter.
Antworten
MOEXX
User
Beiträge: 8
Registriert: Sonntag 15. März 2015, 13:04

Hallo Python-Gemeinde,

ich möchte ein Programm für die Steuerung eines Aquariums schreiben. Dort sollen auch Informationen zu den im Aquarium lebenden Fischen angezeigt werden.
Dafür habe ich schon eine Menüleiste erstellt, die diese Informationen in einem Toplevel-Fenster anzeigen soll.
Da diese Informationen sehr ausführlich sind, sprengen sie bereits den sichtbaren Teil des Monitors.
Ich werde später ein kleines LCD-Display zur Anzeige haben, dass dann eine deutlich geringere Anzeige hat.
Ich habe schon mehrere Möglichkeiten zur Einbettung von Scrollbars im Internet gefunden und ausprobiert.
Ohne Inhalt haben diese auch funktioniert. Aber viele sind Scollbars in Textboxen oder Listboxen, die ich hier nicht gebrauchen kann, da ich noch Bilder dazupacke. Die sollen sich dann auch verschieben.
Folgenden Code habe ich jetzt gefunden:

Code: Alles auswählen

class FischInfo():
    def __init__(self, master):
        self.master = master
        self.master.config(bg = "white")
        frame = Frame(self.master, width = 300, height = 300, bg = "white")
        frame.grid(row = 0, column = 0)
        canvas = Canvas(frame, bd = 0,bg = "white")
        canvas.config(scrollregion=canvas.bbox(ALL))
        horibar = Scrollbar(canvas, orient = HORIZONTAL)
        horibar.config(command=canvas.xview)
        horibar.pack(side=BOTTOM,fill=X)
        vertibar = Scrollbar(canvas, orient = VERTICAL)
        vertibar.config(command=canvas.yview)
        vertibar.pack(side=RIGHT,fill=Y)
        canvas.config(width = 300, height = 300)
        canvas.config(xscrollcommand = horibar.set, yscrollcommand = vertibar.set)
        for Bild in Fischdaten.Bilder:
            photo = PhotoImage(file = Bild)
            label = Label(canvas, image = photo)
            label.photo = photo
            label.pack()#grid(row = i, column = 0, rowspan = 7)
            i = i + 16
        for Array in Fischdaten.Fisch:
            for Text in Fischdaten.Beschriftung:
                label = Label(canvas, text = Text, bg = "white").pack()#grid(row = j, column = 1, sticky = W)
                j = j + 1
        canvas.pack(side = LEFT, expand=True, fill=BOTH)
...
Die Klasse wird über folgenden Befehl aufgerufen:

Code: Alles auswählen

    def FischeOeffnen(self):
        if not self.FischeFenster:
            self.FischeFenster = FischInfo(Toplevel(self.master))   
Ich sitze schon seit einiger Zeit daran, aber bisher konnte die Bildlaufleisten nur angezeigt werden, diese hatten aber keine Funktion.

MFG
MOXX
MOEXX
User
Beiträge: 8
Registriert: Sonntag 15. März 2015, 13:04

hat sich schon erledigt, habe noch ein wenig rumprobiert und dann gesehen, dass ich den Frame nach der Erstellung der Labels und der Bilder aktualisieren muss. Irgendwie logisch, aber als Neuling hat es halt ein wenig gedauert.

MFG MOEXX
Antworten