2016-04-17 86 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

如果您使用的是文本組件包含圖像,您必須使用image_createwindow_create方法,而不是使用pack放置在插件的圖像。您還需要在每張圖片之後插入一個換行符,以使它們垂直堆疊。

+0

這很有效,非常感謝Bryan! – quantdaddy