Moim celem jest dodanie pionowego paska przewijania do ramki zawierającej kilka etykiet. Pasek przewijania powinien być automatycznie włączony, gdy tylko etykiety wewnątrz ramki przekraczają wysokość ramki. Po przeszukaniu znalazłem przydatny post. Na podstawie tego posta rozumiem, że aby osiągnąć to, czego chcę, (popraw mnie, jeśli się mylę, jestem początkującym), najpierw muszę utworzyć ramkę, następnie utworzyć płótno wewnątrz tej ramki i przykleić pasek przewijania do tego rama również. Następnie utwórz kolejną ramkę i umieść ją wewnątrz płótna jako obiekt okna. Więc w końcu wymyślić tegoPasek przewijania Python Tkinter do ramki
from Tkinter import *
def data():
for i in range(50):
Label(frame,text=i).grid(row=i,column=0)
Label(frame,text="my text"+str(i)).grid(row=i,column=1)
Label(frame,text="..........").grid(row=i,column=2)
def myfunction(event):
canvas.configure(scrollregion=canvas.bbox("all"),width=200,height=200)
root=Tk()
sizex = 800
sizey = 600
posx = 100
posy = 100
root.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy))
myframe=Frame(root,relief=GROOVE,width=50,height=100,bd=1)
myframe.place(x=10,y=10)
canvas=Canvas(myframe)
frame=Frame(canvas)
myscrollbar=Scrollbar(myframe,orient="vertical",command=canvas.yview)
canvas.configure(yscrollcommand=myscrollbar.set)
myscrollbar.pack(side="right",fill="y")
canvas.pack(side="left")
canvas.create_window((0,0),window=frame,anchor='nw')
frame.bind("<Configure>",myfunction)
data()
root.mainloop()
- robię to dobrze? Czy istnieje lepszy/mądrzejszy sposób osiągnięcia wyników, które dostarczył mi ten kod?
- Dlaczego muszę używać metody siatkowej? (Próbowałem metody place, ale żadna z etykiet nie pojawia się na płótnie).
- Co jest takiego specjalnego w używaniu anchor = 'nw' podczas tworzenia okna na płótnie?
Proszę zachować prostą odpowiedź, ponieważ jestem początkującym. Dzięki za pomoc.
Trzeba go do tyłu w swoim pytaniu, choć poprawny kod wygląda na pierwszy rzut oka. Musisz utworzyć ramkę, osadzić ją w obszarze roboczym, a następnie dołączyć pasek przewijania do obszaru roboczego. –
możliwy duplikat [Dodawanie paska przewijania do siatki widżetów w Tkinter] (http://stackoverflow.com/questions/3085696/adding-a-scrollbar-to-a-grid-of-widgets-in-tkinter) –
@TrevorBoydSmith Istnieje wiele rzeczy, które są potencjalnym duplikatem, ale głosowałem, aby zamknąć to jako duplikat innego, który wydaje się mieć najlepsze odpowiedzi: http://stackoverflow.com/questions/1873575/how-could -i-get-a-frame-with-a-scrollbar-in-tkinter – ArtOfWarfare