Ricerca…


introduzione

Le barre di scorrimento possono essere aggiunte ai widget Listbox, Canvas e Text. Inoltre, i widget Entry possono essere scrollati orizzontalmente. Per poter scorrere altri tipi di widget, è necessario inserirli in un oggetto Canvas o in un widget Testo.

Sintassi

  • scrollbar = tk.Scrollbar (parent, ** kwargs)

Parametri

Parametro Descrizione
genitore i widget tkinter esistono in una gerarchia. Ad eccezione della finestra radice, tutti i widget hanno un genitore. Alcuni tutorial online chiamano questo "master". Quando il widget viene aggiunto allo schermo con pack, luogo o griglia, apparirà all'interno di questo widget genitore
Oriente Orientamento della barra di scorrimento, "vertical" (valore predefinito) o "horizontal"

Osservazioni

Questi esempi presuppongono che tkinter sia stato importato con import tkinter as tk (python 3) o import Tkinter as tk (python 2).

Collegamento di una barra di scorrimento verticale a un widget di testo

La connessione tra il widget e la barra di scorrimento va in entrambe le direzioni. La barra di scorrimento deve essere espansa verticalmente in modo che abbia la stessa altezza del 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)

Scorrimento di un widget Canvas in senso orizzontale e verticale

Il principio è essenzialmente lo stesso del widget Testo, ma un layout Grid viene utilizzato per posizionare le barre di scorrimento attorno al widget.

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)

A differenza del widget Testo, la regione scrollabile della Tela non viene aggiornata automaticamente quando il suo contenuto viene modificato, quindi dobbiamo definirlo e aggiornarlo manualmente usando l'argomento scrollregion :

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

canvas.bbox("all") restituisce le coordinate del rettangolo adattando l'intero contenuto del canvas.

Scorrimento di un gruppo di widget

Quando una finestra contiene molti widget, potrebbero non essere tutti visibili. Tuttavia, né una finestra (istanza Tk o Toplevel) né una cornice sono scorrevoli. Una soluzione per rendere scorrevole il contenuto della finestra consiste nel mettere tutti i widget in una cornice e quindi incorporare questa cornice in una tela utilizzando il metodo 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow