스크롤 막대 프레임과 함께 매우 긴 레이블을 표시하려고합니다.Python Tkinter Double Scrollbar
어떤 이유로 든 각 레이블의 너비와 높이를 고정 된 값으로 설정해야합니다.
그러나이 경우 label text
이 label width
및 label height
을 초과하면 레이블의 일부가 표시되지 않습니다.
그래서 레이블 폭과 높이보다 긴 레이블 텍스트가있는 각 레이블에 다른 스크롤 막대를 추가하고 싶습니다. 여기에 내가 시도 것입니다 : 현재
from Tkinter import*
def myfunction(event):
canvas1.configure(scrollregion=canvas1.bbox("all"),width=300,height=400)
root=Tk()
root.wm_geometry("%dx%d+%d+%d" % (500, 500, 5, 5))
data1="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
frame1=Frame(root)
frame1.place(x=20,y=20)
canvas1=Canvas(frame1)
frame2=Frame(canvas1,bg='white',relief=GROOVE,bd=0,width=1230,height=400)
scrollbar1=Scrollbar(frame1,orient="vertical",command=canvas1.yview)
canvas1.configure(yscrollcommand=scrollbar1.set)
scrollbar1.pack(side="right",fill="y")
canvas1.pack(side="left")
canvas1.create_window((0,0),window=frame2,anchor='nw')
frame2.bind("<Configure>",myfunction)
for i in range(10):
Label(frame2,text=data1,width=30,height=4,bg='white',relief=GROOVE,bd=1,wraplength=200,anchor=NW,justify=LEFT).grid(row=i,column=1)
root.mainloop()
, 나는 레이블 무리가 부착 된 스크롤이있는 캔버스에 격자 방법을 사용하여 표시합니다. 보시다시피, "aaaa ..."데이터가 표시되지 않습니다. 어쨌든 각 라벨 상자에 스크롤바를 추가 할 수 있습니까? 레이블 상자의 크기를 변경하고 싶지 않습니다.
레이블 대신 Text box
을 사용해야합니까?
--EDIT--
이 내가 시도 것입니다 :
는from Tkinter import*
def myfunction(event):
canvas1.configure(scrollregion=canvas1.bbox("all"),width=400,height=200)
def myfunctionx(event):
canvas1x.configure(scrollregion=canvas1x.bbox("all"),width=100,height=50)
root=Tk()
root.wm_geometry("%dx%d+%d+%d" % (500, 500, 5, 5))
data1="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
frame1=Frame(root)
frame1.place(x=20,y=20)
canvas1=Canvas(frame1)
frame2=Frame(canvas1,bg='white',relief=GROOVE,bd=0,width=1230,height=400)
scrollbar1=Scrollbar(frame1,orient="vertical",command=canvas1.yview)
canvas1.configure(yscrollcommand=scrollbar1.set)
scrollbar1.pack(side="right",fill="y")
canvas1.pack(side="left")
canvas1.create_window((0,0),window=frame2,anchor='nw')
frame2.bind("<Configure>",myfunction)
frame1x=Frame(frame1,bg='green',width=100,height=50,bd=1,relief=GROOVE)
frame1x.place(x=10,y=20)
canvas1x=Canvas(frame1x,bg='yellow',relief=GROOVE,bd=0,width=100,height=50)
frame2x=Frame(canvas1x,bg='white',relief=GROOVE,bd=0,width=100,height=50)
scrollbar1x=Scrollbar(frame1x,orient="vertical",command=canvas1x.yview)
canvas1x.configure(yscrollcommand=scrollbar1x.set)
scrollbar1x.pack(side="right",fill="y")
canvas1x.pack(side="left")
canvas1x.create_window((0,0),window=frame2x,anchor='nw')
frame2x.bind("<Configure>",myfunctionx)
for i in range(10):
Label(frame2x,text=data1,width=20,height=4,bg='white',relief=GROOVE,bd=1,wraplength=200,anchor=NW,justify=LEFT).grid(row=i,column=1)
root.mainloop()
하지만 그 대신 각 레이블에 스크롤 막대를 추가, 그것은 1 스크롤로 모든 라벨을 넣습니다. 각 라벨 상자에 대해 1 스크롤바를 가질 수있는 방법이 있습니까? (루프를 사용하여 여러 레이블 상자를 만드는 것으로 가정합니다.)
Tkinter에서 제공하는 [스크롤 가능한 위젯] (http://effbot.org/zone/tkinter-scrollbar-patterns.htm) 중 각 레이블을 '목록 상자'로 만들 것을 제안합니다. 그러나 그것들은'wraplength' 옵션을 지원하지 않으므로 잠재적으로 당신은 각각에 수평 스크롤바와 수직 스크롤바를 부착해야합니다. – martineau
또 다른 가능성은 스크롤 가능한 ['LabelFrame'] (http://stackoverflow.com/questions/7113937/how-do-you-create-a-labelframe-with-a-scrollbar-in-tkinter) 일 수 있습니다. – martineau