Forum >> Programmazione Python >> GUI >> barra di scorrimento

Pagina: 1

Non è possibile controllare con una barra di scorrimento on oggetto Canvas contenente oggetti Frame?



esempio:

import tkinter as tk
finestra = tk.Tk()
quadro = tk.Frame(finestra, width=800, height=600)
barra = tk.Scrollbar(finestra, orient=tk.VERTICAL)
griglia = tk.Canvas(quadro, width=800, height=600,
                 scrollregion=(0, 0, 800, 1200))

riquadro0 = tk.Frame(griglia, width=400, height=600)
riquadro1 = tk.Frame(griglia, width=400, height=600)
griglia0 = tk.Canvas(riquadro0, width=400, height=1200,
                 scrollregion=(0, 0, 400, 1200))
griglia1 = tk.Canvas(riquadro1, width=400, height=1200,
                 scrollregion=(0, 0, 400, 1200))

griglia.config(yscrollcommand=barra.set)
barra.config(command=griglia.yview)

ovale = griglia0.create_oval(0, 0, 400, 1000, fill = 'red')
testo = griglia0.create_text(10,10, text = 'griglia0')
ovale1 = griglia1.create_oval(0, 0, 400, 1000, fill = 'green')
testo1 = griglia1.create_text(10,10, text = 'griglia1')

riquadro0.pack(side=tk.RIGHT)
riquadro1.pack()
griglia0.pack(side=tk.RIGHT)
griglia1.pack()

griglia.pack()
barra.pack(side=tk.RIGHT, fill=tk.Y)
quadro.pack()
finestra.mainloop()




In effetti la domanda relativa alla Scrollbar è subordinata ad un'altra.
Se nel 'Canvas' si definisce un 'Frame', il 'Canvas' non si vede più?

Esempio:

import tkinter as tk

finestra = tk.Tk()
quadro = tk.Frame(finestra, width=800, height=600)
barra = tk.Scrollbar(finestra, orient=tk.VERTICAL)
griglia = tk.Canvas(quadro, width=800, height=600,
                 scrollregion=(0, 0, 800, 1200))

griglia.config(yscrollcommand=barra.set)
barra.config(command=griglia.yview)

ovale = griglia.create_oval(600, 10, 800, 1000, fill = 'black')
testo = griglia.create_text(20,10, text = 'griglia')

griglia.pack()
barra.pack(side=tk.RIGHT, fill=tk.Y)
quadro.pack()

finestra.mainloop()



La Scrollbar funziona correttamente!




Ora aggiungo la definizione di un Frame nel Canvas. Il Canvas scompare e sembra del tutto inutile. La Scrollbar non ha più alcun effetto.




Commetto qualche errore? Non posso controllare con una Scrollbar l'intera finestra?

import tkinter as tk

finestra = tk.Tk()
quadro = tk.Frame(finestra, width=800, height=600)
barra = tk.Scrollbar(finestra, orient=tk.VERTICAL)
griglia = tk.Canvas(quadro, width=800, height=600,
                 scrollregion=(0, 0, 800, 1200))

griglia.config(yscrollcommand=barra.set)
barra.config(command=griglia.yview)

ovale = griglia.create_oval(600, 10, 800, 1000, fill = 'black')
testo = griglia.create_text(20,10, text = 'griglia')

griglia.pack()
barra.pack(side=tk.RIGHT, fill=tk.Y)
quadro.pack()

riquadro0 = tk.Frame(griglia, width=20, height=60)
riquadro0.pack(side=tk.RIGHT)

finestra.mainloop()







il Frame non va inserito con pack() nel Canvas, ma tramite create_window().
Errore da principiante!


Pagina: 1



Esegui il login per scrivere una risposta.