在Tkinter中,如何在鼠标滚轮滚动文本小部件时保持文本插入在屏幕上(在文本小部件中)?
下面是用代码回答问题的示例。这不是问题的一部分。这就是答案。我相信有更多的方法来回答这个问题(所以这就是为什么我写了一个"例子"的答案)。
from tkinter import *
…
def create_widgets(self):
…
self.textWidget.bind("<MouseWheel>", self.mouse_wheel) #Windows mouse wheel
self.textWidget.bind("<Button-4>", self.mouse_wheel) #Linux mouse wheel
self.textWidget.bind("<Button-5>", self.mouse_wheel) #Linux mouse wheel (one is for scrolling up and one is for scrolling down, in Linux)
def mouse_wheel(self, event):
self.textWidget.mark_set(INSERT, "current display linestart") #display makes it uses display lines (as in when word wrap is on in case you have a line that spans a lot of 'display' lines)
#Don't add return "break" here unless you want to write the entire mouse wheel functionality yourself.
此代码使用mark_set
将插入位置定位在"current display linestart"
(这是鼠标指针所在行的开头)。当你滚动鼠标滚轮时,mouse_wheel
方法被调用。这是一个跨平台的解决方案,因为它提供了在Linux和其他系统(如Windows)上执行此操作的方法。