我已经编写了这段代码,意图制作类似于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()
答案 0 :(得分:1)
每次滚动时,任何不再可见的项目都会保留在原始网格位置:您可能已将新项目放在同一行/列中,但实际上并未删除原始项目来自网格的项目。您需要draw_list()
顶部的类似内容来明确取消旧网格的格式化:
for widget in container.grid_slaves():
widget.grid_forget()
其中container
是包含滚动项的窗口或框架 - 您的示例代码实际上并未为此对象指定名称,您需要执行container = Tk()
之类的操作以便您可以引用它