Python 3.10 Tkinter中笔记本触摸板横向滚动异常如何解决?
解决Tkinter中笔记本触摸板横竖滚动识别错误问题
在使用Python 3.10搭配Tkinter库开发时,遇到笔记本触摸板横向滚动操作被误识别为纵向滚动的问题。此前在StackOverflow找到的修复方案在Windows环境下无法生效,最终通过打印event.state值区分横向与纵向滚动对应的状态标识,实现了触摸板横竖滚动的正确响应。
实现代码
# 绑定画布与滚动条 self.canvas.config(yscrollcommand=self.scrollbar.set) self.canvas.config(xscrollcommand=self.horizontal_scrollbar.set) self.canvas.bind("<Configure>", lambda e: self.canvas.configure(scrollregion=self.canvas.bbox("all"))) self.canvas.bind_all("<MouseWheel>", self.on_mousewheel) # 鼠标滚轮/触摸板滚动处理函数 def on_mousewheel(self, event): # 检测是否按住Ctrl键(传统横向滚动快捷键) if event.state & 0x4: # 横向滚动 self.canvas.xview_scroll(int(-1 * (event.delta / 80)), "units") else: # 通过event.state区分触摸板的横竖滚动 if event.state == 9: self.canvas.xview_scroll(int(-1 * (event.delta / 80)), "units") elif event.state == 8: self.canvas.yview_scroll(int(-1 * (event.delta / 100)), "units")
内容的提问来源于stack exchange,提问作者ViolationHandler.exe
相关产品推荐
相关产品推荐

