Python 2.7 手动滚动,Tkinter离开最后一个元素

Python 2.7 手动滚动,Tkinter离开最后一个元素,python-2.7,tkinter,Python 2.7,Tkinter,我写这段代码的目的是制作类似于Excel的东西,您可以在电子表格中上下滚动。但是,我发现,当您向上滚动时,它会离开最低的单元格,而不是滚动。我似乎不知道我哪里出错了,任何帮助都是感激的 from tkinter import * def scroll(event): #changes from what element to start drawing global starting_value starting_value -= event.delta/120 d

我写这段代码的目的是制作类似于Excel的东西,您可以在电子表格中上下滚动。但是,我发现,当您向上滚动时,它会离开最低的单元格,而不是滚动。我似乎不知道我哪里出错了,任何帮助都是感激的

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()
从tkinter导入*
定义滚动(事件):#从哪个元素开始绘图的更改
全局起始值
起始值-=event.delta/120
绘制列表(起始值)
def draw_list(起始值):#从指定索引中提取条目
对于索引,枚举中的i(列出\u编号[起始\u值:起始\u值+10]):
i、 网格(行=索引)
数字列表=[Entry()表示范围(100)内的i]
对于索引,枚举中的i(数字列表):
i、 插入(0,索引)
i、 绑定(“”,滚动)
起始值=0
绘制列表(起始值)
mainloop()

每次滚动时,所有不再可见的项目都会保留在其原始网格位置:您可能在同一行/列中放置了新项目,但这实际上不会从网格中删除原始项目。在
draw_list()
的顶部,您需要类似这样的内容来显式地取消对旧项的网格划分:

for widget in container.grid_slaves():
    widget.grid_forget()
其中,
container
是包含滚动项目的窗口或框架-示例代码实际上没有为该对象指定名称,您需要执行类似于
container=Tk()
的操作,以便可以引用它