Scrollbar fängt nicht oben an!?

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

Montag 11. Juni 2018, 14:04

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: 1070
Registriert: Samstag 2. Juni 2018, 10:21

Montag 11. Juni 2018, 14:55

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?
“Capitalism is the astounding belief that the most wickedest of men will do the most wickedest of things for the greatest good of everyone.” – John Maynard Keynes
Benutzeravatar
wuf
User
Beiträge: 1483
Registriert: Sonntag 8. Juni 2003, 09:50

Montag 11. Juni 2018, 19:39

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