Python Tkinter双滚动条

Python Tkinter双滚动条,python,tkinter,scrollbar,tkinter-canvas,Python,Tkinter,Scrollbar,Tkinter Canvas,我试图用滚动条框架显示一堆很长的标签 出于某种原因,我需要将每个标签的宽度和高度设置为固定值 但在这种情况下,当标签文本超过标签宽度和标签高度时,标签的某些部分将不显示 因此,我想为每个标签添加另一个滚动条,该标签的标签文本比标签的宽度和高度长。以下是我尝试过的: from Tkinter import* def myfunction(event): canvas1.configure(scrollregion=canvas1.bbox("all"),width=300,heig

我试图用滚动条框架显示一堆很长的标签

出于某种原因,我需要将每个标签的宽度和高度设置为固定值

但在这种情况下,当
标签文本
超过
标签宽度
标签高度
时,标签的某些部分将不显示

因此,我想为每个标签添加另一个滚动条,该标签的标签文本比标签的宽度和高度长。以下是我尝试过的:

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()
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()

但它并没有向每个标签添加滚动条,而是将所有标签放在一个滚动条中。有没有办法让每个标签框都有一个滚动条?(假设我将使用循环创建多个标签框。)

不能使用滚动条滚动标签


如果您需要可滚动的文本,请使用条目或文本小部件。

对于Tkinter提供的,我建议您将每个标签设置为
列表框。但是,它们不支持
wraplength
选项,因此可能需要在每个滚动条上同时附加水平和垂直滚动条。另一种可能是可滚动条。谢谢!通过使用文本小部件(state=DISABLED)使其工作。