如何在Tkinter列表框中禁用水平滚动? (Python 3)

时间:2017-11-30 04:39:13

标签: python python-3.x tkinter listbox

在Tkinter中说你在窗口中有一个特定大小的列表框。然后,让我们说你在该列表框中添加一个大于该大小的字符串。如果您突出显示此元素并向侧面拖动,列表框将自动"滚动"本身,这样你就可以看到完整的元素。无论如何都禁止运行一个反复尝试将滚动设置为0的线程?

import tkinter
root = tkinter.Tk()
listbox = tkinter.Listbox(root)
listbox.insert("end", "Minimal, Complete, and Verifiable example")
listbox.pack()
root.mainloop()
quit()

1 个答案:

答案 0 :(得分:2)

按下按钮时,鼠标离开列表框会触发自动滚动。也许最简单的解决方案是通过创建自己的返回“break”的绑定来防止这种行为:

listbox.bind("<B1-Leave>", lambda event: "break")

注意:这也会阻止垂直自动滚动。如果你想保持垂直自动滚动,你必须编写一个更复杂的函数,如果鼠标位于列表框的左侧或右侧,它将只返回“break”。