Tkinter如何在使用鼠标滚轮时将插入保持在屏幕上

时间:2014-06-16 22:13:15

标签: python event-handling tkinter mouseevent mousewheel

在Tkinter中,如何使用鼠标滚轮在“文本”小部件中滚动时,如何在屏幕上(在“文本”小部件中)插入文本?

1 个答案:

答案 0 :(得分:0)

以下是代码中问题的示例回答。这不是问题的一部分。这是答案。我确定有更多方法可以回答它(这就是我写作的原因,以及一个例子'答案)。

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)上执行此操作的方法。