使用Tkinter手动滚动离开最后一个元素

时间:2017-11-14 22:50:20

标签: 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

    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 个答案:

答案 0 :(得分:1)

每次滚动时,任何不再可见的项目都会保留在原始网格位置:您可能已将新项目放在同一行/列中,但实际上并未删除原始项目来自网格的项目。您需要draw_list()顶部的类似内容来明确取消旧网格的格式化:

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

其中container是包含滚动项的窗口或框架 - 您的示例代码实际上并未为此对象指定名称,您需要执行container = Tk()之类的操作以便您可以引用它