2017-11-14 7 views
0

私は、スプレッドシート内を上下にスクロールすることができる、Excelに似た何かを作成する意図でこのコードを書いています。私は、しかし、あなたがそれをスクロールするのではなく、最も低いセルを残すことを、スクロールアップしたときに見つけました。私はどこに間違っていたのか分かりません。何か助けていただければ幸いです。あなたはおそらく、同じ行/列に新しいアイテムを配置しているが、それは実際には削除されません:最後の要素を残してTkinterを使って手動でスクロール

from tkinter import * 

def scroll(event): #changes from what element to start drawing 

    global starting_value 
    starting_value -= event.delta/120 

    draw_list(starting_value) 

def draw_list(starting_value): #draws entries from specified index 
    for index,i in enumerate(list_of_numbers[starting_value:starting_value+10]): 
     i.grid(row=index) 

list_of_numbers = [Entry() for i in range(100)] 

for index,i in enumerate(list_of_numbers): 
    i.insert(0,index) 
    i.bind('<MouseWheel>',scroll) 

starting_value = 0 

draw_list(starting_value) 

mainloop() 

答えて

1

あなたがスクロールするたびに、もはや目に見えることになっているすべての項目は元のグリッド位置に残されていますグリッドから元のアイテム。あなたは古いアイテムdraw_list()に明示的にアングリッドの一番上にこのようなものが必要だろう:containerは、あなたのスクロール項目を含むウィンドウまたはフレームである

for widget in container.grid_slaves(): 
    widget.grid_forget() 

は - あなたの例のコードは、実際には、このオブジェクトaを与えるものではありませんあなたがそれを参照することができるように、container = Tk()のような何かをする必要があります。