Scrollbar fängt nicht oben an!?

Fragen zu Tkinter.
Antworten
Felixpythontkinter
User
Beiträge: 5
Registriert: Sonntag 10. Juni 2018, 19:46

Ich habe eine Scrollbar in meinem Fenster eingefügt (in Verbindung mit Canvas)
Wie kriegt man es hin, dass das Scrollen ganz oben anfängt.
Benutzeravatar
__blackjack__
User
Beiträge: 13071
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich weiss nicht ob ich der Einzige bin, aber mir ist das Problem so *überhaupt nicht* klar nach dieser Beschreibung. Kannst Du ein minimales, aber lauffähiges Codebeispiel zeigen und beschreiben was genau Du erwartest und was stattdessen passiert?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Felixpythontkinter

Hier etwas für das Canvas Studium:

Code: Alles auswählen

import tkinter as tk

APP_TITLE = "Scrolled Canvas"
APP_XPOS = 100
APP_YPOS = 100
APP_WIDTH = 350
APP_HEIGHT = 200


class Application(tk.Frame):

    def __init__(self, master):
        self.master = master
        tk.Frame.__init__(self, master)
        
        self.label_frame = tk.Frame(self)
        self.label_frame.pack(padx=0, pady=0)

        self.vert_scrollbar = tk.Scrollbar(self.label_frame)
        self.vert_scrollbar.pack(side='right', fill='y')
        
        self.canvas = tk.Canvas(self.label_frame, bg='white',
            yscrollcommand=self.vert_scrollbar.set)
        self.canvas.pack(side='left', fill='both', expand=True)
        
        self.canvas['width'] = 200
        self.canvas['height'] = 200
        self.canvas['scrollregion'] = (0, 0, 200, 500)
        self.vert_scrollbar['command'] = self.canvas.yview
        
        self.canvas.create_line(0, 0, 200, 500, fill='red')
        
        button_frame = tk.Frame(self)
        button_frame.pack(pady=(10, 0))
        
        tk.Button(button_frame, text="Scrollbar oben", 
            command=self.set_to_top).pack(side='left', padx=2)

        tk.Button(button_frame, text="Scrollbar unten",
            command=self.set_to_bottom).pack(side='left', padx=2)

    def set_to_bottom(self):
        self.canvas.yview('moveto', 1.0)
    
    def set_to_top(self):
        self.canvas.yview('moveto', 0.0)

 
def main():
    app_win = tk.Tk()
    app_win.title(APP_TITLE)
    app_win.geometry("+{}+{}".format(APP_XPOS, APP_YPOS))
    #app_win.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT))
    
    app = Application(app_win)
    app.pack(fill='both', expand=True, padx=10, pady=10)
    
    app_win.mainloop()
 
 
if __name__ == '__main__':
    main()
Zeig uns doch bitte deine Kodierversuche.
Gruss wuf ;-)
Take it easy Mates!
Antworten