2016-04-17 92 views
0

固定サイズ(300x300)の複数の画像を列に積み重ねて表示するウィジェットを設計したいと思います。これを行うために、サイズ300x800のテキストウィジェットを作成し、内部に画像ラベルを追加しました。私は下の例で4つの画像を追加しています。積み重ねられた画像の垂直方向の合計サイズはより多いので、テキストウィジェットのサイズが拡大され、画面にも適合しません。すべての画像を拡大せずにテキストウィジェット内に残し、スクロールバーをテキストウィジェットに追加して、すべての画像をスクロールして見ることができます。下のコードでは、スクロールバーを追加できますが、動作しません。スクロールバーでTkinterに複数の画像を表示

from Tkinter import * 
import ttk 
from PIL import * 
from PIL import Image 
import os 
root = Tk(); 

text = Text(root, width = 300, height=300) 
text.grid(row=0, column=0) 
text.grid_propagate(False) 


class ImageLabel: 
    def __init__(self, master, img_file):   
     label = Label(master) 
     label.img = PhotoImage(file=img_file) 
     label.config(image=label.img) 
     label.pack(side="bottom") 

## Adding images to text widget 
width = 300 
src = "./" 
my_item_id = 770353540339 
count = 0; 
file_name = str(my_item_id)+'_'+str(count)+'.jpeg'; 
full_file_name = os.path.join(src, file_name) 

imagelabels = [] 
while os.path.isfile(full_file_name): 
    im = Image.open(full_file_name) 
    height = width*im.size[1]/im.size[0] 
    im.thumbnail((width, height), Image.ANTIALIAS) 
    im.save(str(count),'gif') 
    imagelabels.append(ImageLabel(text, str(count))) 
    count = count+1; 
    file_name = str(my_item_id)+'_'+str(count)+'.jpeg'; 
    full_file_name = os.path.join(src, file_name) 
    print(count) 

## Adding scrollbar 
scrollbar = Scrollbar(root, orient=VERTICAL, command=text.yview) 
scrollbar.grid(row=0,column=1, sticky='ns') 
text.config(yscrollcommand=scrollbar.set) 

root.mainloop() 

答えて

0

あなたが画像を含むようにテキストウィジェットを使用している場合は、むしろウィジェットに画像を配置するpackを使用するよりもimage_createまたはwindow_createメソッドを使用する必要があります。縦に積み重ねるには、各イメージの後に改行を挿入する必要があります。

+0

それはうまくいく、ブライアンありがとう! – quantdaddy

関連する問題