Моя цель - добавить вертикальную полосу прокрутки к кадру, в котором есть несколько надписей. Полоса прокрутки должна автоматически включаться, как только метки внутри рамки превышают высоту кадра. После поиска я нашел this полезный пост. Основываясь на этом посту, я понимаю, что для достижения того, чего я хочу (исправьте меня, если я ошибаюсь, я начинаю), мне нужно сначала создать кадр, а затем создать холст внутри этого фрейма и наклеить полосу прокрутки на это также. После этого создайте другой фрейм и поместите его внутри холста в качестве объекта окна. Итак, я наконец-то с этимProllon Tkinter scrollbar для рамки
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()
- я делаю это правильно? Есть ли лучший/более умный способ достичь результата, который мне дал этот код?
- Почему я должен использовать метод сетки? (Я попробовал метод, но ни один из ярлыков не появился на холсте.)
- Что такого особенного в использовании anchor = 'nw' при создании окна на холсте?
Пожалуйста, держите свой ответ простым, поскольку я новичок. Спасибо за вашу помощь.
Вы его назад в вашем вопросе, хотя код выглядит правильно на первый взгляд. Вы должны создать фрейм, вставить его в холст, а затем прикрепить полосу прокрутки к холсту. –
Возможный дубликат [Добавление полосы прокрутки в сетку виджетов в Tkinter] (http://stackoverflow.com/questions/3085696/adding-a-scrollbar-to-a-grid-of-widgets-in-tkinter) –
@TrevorBoydSmith Есть много вещей, это потенциальный дубликат, но я голосовал, чтобы закрыть это как дубликат другого, который, кажется, имеет лучшие ответы: http://stackoverflow.com/questions/1873575/how-could -i-get-a-frame-with-a-scrollbar-in-tkinter – ArtOfWarfare