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: 13151
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?
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
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