0

スクロールバー フレームを使用して非常に長いラベルを表示しようとしています。

何らかの理由で、各ラベルの幅と高さを固定値に設定する必要があります。

ただし、その場合、 がlabel textを超えるlabel widthlabel 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()

現在、スクロールバーが接続されているキャンバスに grid メソッドを使用して表示されるラベルがたくさんあります。ご覧のとおり、私のデータのポーション「aaaa...」が表示されていません。とにかく各ラベルボックスにスクロールバーを追加できますか? ラベル ボックスのサイズを変更したくありません。

またはText box、ラベルの代わりに使用する必要がありますか?

- 編集 -

これは私が試したことです:

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 つのスクロールバーを設定する方法はありますか? (ループを使用して複数のラベル ボックスを作成すると仮定します。)

4

1 に答える 1

0

スクロールバーを使用してラベルをスクロールすることはできません。

スクロール可能なテキストが必要な場合は、エントリまたはテキスト ウィジェットを使用します。

于 2013-06-13T10:45:26.040 に答える