在Tkinter中处理触摸屏手势

3 投票
1 回答
5204 浏览
提问于 2025-04-18 17:43

我该如何在Tkinter中安装一个触摸屏手势的处理程序呢?

我需要做的事情非常简单:每当检测到“放大”手势时,就增加字体大小。

在Tkinter中,这样做可能吗?如果Tcl/Tk没有特别实现这个功能的话。我想可能是窗口管理器给客户端窗口发送了一些事件,我可以监听并处理这些事件,或者客户端必须向窗口管理器注册一个特定类型事件的处理程序。但是如果在Tkinter中无法注册这些处理程序,而Tcl又没有提供相关接口的话,我就不知道该怎么做了。

1 个回答

2

Tk目前不支持复杂的触摸事件,而且MSDN上关于这些事件在事件循环中是怎样的,信息非常少(看起来这不是你应该关注的内容)。因为Tk在很底层就拦截了这些数据,所以要把它们整合进来会比较麻烦。

我无法进一步追踪这个问题。我能看出一些代码是怎么工作的,但MSDN上的示例和Tk的实际操作完全不一致。两者之间有很多不匹配的地方。(我也没有支持这些功能的设备;我的触摸设备不运行Windows,而我的Windows设备又不支持触摸输入。)

我们需要的是一个有触摸输入的Windows 8系统的人,来运行一个经过修改的Tk应用程序(Tk_TranslateWinEvent()win/tkWinX.c中是合适的位置),让它打印出未识别的事件。这样我们就能看到触摸事件实际上是怎样通过网络(实际上是通过主消息泵)传输的;我们可能希望这些事件与ManipulationStartedManipulationUpdatedManipulationCompleted事件有关,但光有希望是不够的。(我们也希望这些事件不是通过其他途径传递过来的。)

撰写回答