Zoeken…


Invoering

Schuifbalken kunnen worden toegevoegd aan de widgets Listbox, Canvas en Tekst. Bovendien kunnen Entry-widgets horizontaal worden gescrolld. Om door andere typen widgets te kunnen bladeren, moet u ze in een Canvas- of een Tekstwidget plaatsen.

Syntaxis

  • schuifbalk = tk.Scrollbar (ouder, ** kwargs)

parameters

Parameter Beschrijving
ouder tkinter-widgets bestaan in een hiërarchie. Behalve het root-venster hebben alle widgets een ouder. Sommige online tutorials noemen dit "master". Wanneer de widget met pakket, plaats of raster aan het scherm wordt toegevoegd, verschijnt deze in deze bovenliggende widget
oriënteren Oriëntatie van de schuifbalk, "vertical" (standaardwaarde) of "horizontal"

Opmerkingen

Deze voorbeelden gaan ervan uit dat tkinter is geïmporteerd met import tkinter as tk (python 3) of import Tkinter as tk (python 2).

Een verticale schuifbalk verbinden met een tekstwidget

De verbinding tussen de widget en de schuifbalk gaat beide kanten op. De schuifbalk moet verticaal worden uitgebreid, zodat deze dezelfde hoogte heeft als de widget.

text = tk.Text(parent)
text.pack(side="left")

scroll_y = tk.Scrollbar(parent, orient="vertical", command=text.yview)
scroll_y.pack(side="left", expand=True, fill="y")

text.configure(yscrollcommand=scroll_y.set)

Horizontaal en verticaal door een Canvas-widget bladeren

Het principe is in wezen hetzelfde als voor de tekstwidget, maar een Grid out wordt gebruikt om de schuifbalken rond de widget te plaatsen.

canvas = tk.Canvas(parent, width=150, height=150)
canvas.create_oval(10, 10, 20, 20, fill="red")
canvas.create_oval(200, 200, 220, 220, fill="blue")
canvas.grid(row=0, column=0)

scroll_x = tk.Scrollbar(parent, orient="horizontal", command=canvas.xview)
scroll_x.grid(row=1, column=0, sticky="ew")

scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)
scroll_y.grid(row=0, column=1, sticky="ns")

canvas.configure(yscrollcommand=scroll_y.set, xscrollcommand=scroll_x.set)

In tegenstelling tot de tekstwidget, wordt het schuifbare gebied van het canvas niet automatisch bijgewerkt wanneer de inhoud ervan wordt gewijzigd, dus moeten we het definiëren en handmatig bijwerken met behulp van het argument scrollregion :

canvas.configure(scrollregion=canvas.bbox("all"))

canvas.bbox("all") retourneert de coördinaten van de rechthoek die past bij de hele canvasinhoud.

Door een groep widgets bladeren

Wanneer een venster veel widgets bevat, zijn ze mogelijk niet allemaal zichtbaar. Noch een venster (Tk- of Toplevel-instantie) noch een frame zijn echter schuifbaar. Een oplossing om de vensterinhoud schuifbaar te maken, is om alle widgets in een frame te plaatsen en dit frame vervolgens in een canvas in te sluiten met de methode create_window .

canvas = tk.Canvas(parent)
scroll_y = tk.Scrollbar(parent, orient="vertical", command=canvas.yview)

frame = tk.Frame(canvas)
# group of widgets
for i in range(20):
    tk.Label(frame, text='label %i' % i).pack()
# put the frame in the canvas
canvas.create_window(0, 0, anchor='nw', window=frame)
# make sure everything is displayed before configuring the scrollregion
canvas.update_idletasks()

canvas.configure(scrollregion=canvas.bbox('all'), 
                 yscrollcommand=scroll_y.set)
                 
canvas.pack(fill='both', expand=True, side='left')
scroll_y.pack(fill='y', side='right')


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow