2017-08-25 136 views
0

我正在嘗試類似newsfeed的操作,但要簡單得多。只有物品從頂部填充,舊物品被壓下。我參考了Adding a scrollbar to a group of widgets in Tkinter,但是這個在底部增加了一個新項目,我不能這樣做,所以最新的一個總是添加在頂部,舊的是在底部。先謝謝你。 我有這個至今:在tkinter上添加滾動項目

import Tkinter as tk 
from Tkinter import * 
import PIL 
from PIL import Image, ImageTk 

root = tk.Tk() 

canvas = tk.Canvas(root, borderwidth=0, background="#ffffff") 
frame = tk.Frame(canvas, background="#ffffff") 
vsb = tk.Scrollbar(root, orient="vertical", command=canvas.yview) 
canvas.configure(yscrollcommand=vsb.set) 

vsb.pack(side="right", fill="y") 
canvas.pack(side="left", fill="both", expand=True) 
canvas.create_window((4,4), window=frame, anchor="nw") 

row=0 

def populate(frame): 
    global row 
    row += 1 

      #image files 
    imfile = "potato.jpeg" 
    im=Image.open(imfile) 
    resized=im.resize((50,50), PIL.Image.ANTIALIAS) 
    tkimage = ImageTk.PhotoImage(resized) 

    t="the item number %s \t\t" %row 


    tk.Label(frame, text=t, compound=tk.RIGHT).pack() 

def onFrameConfigure(canvas): 
    '''Reset the scroll region to encompass the inner frame''' 
    canvas.configure(scrollregion=canvas.bbox("all")) 

def update_status(): 
    populate(frame) 
    root.after(1000, update_status) 


root.after(1000, update_status) 
frame.bind("<Configure>", lambda event, canvas=canvas: onFrameConfigure(canvas)) 
root.geometry("500x500") 
root.mainloop() 
+0

是什麼 「FB」 代表什麼?另外,請創建一個[mcve]來說明您嘗試過的內容。密切注意Facebook的「M」和「C」 –

+0

,或者可以是新聞提要。基本上意味着堆棧。哪些最新項目添加在頂部 –

+0

'.pack(side =「top」)'您的項目將是明顯的解決方案 - 這是行不通的? – jasonharper

回答

0

謝謝你們,我發現了這件事:

tk.Label(frame, text=t,image=tkimage, compound=tk.RIGHT).pack(side="bottom") 
b=Button(frame, text="see more for %s" %row, command=new_window).pack(side="bottom")