You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Tcl中为右键点击事件绑定proc并修正立即执行问题

问题解决思路及修改方案

你的代码问题核心出在bind命令的参数处理上:

  • 当你写bind . <Button-1> [kuser]时,[kuser]会被Tcl立即执行(所以直接输出AAA),然后把执行结果(空字符串)绑定到点击事件,完全不符合你需要点击后触发的逻辑。
  • 另外,Tcl中右键对应的事件是<Button-3>(Button-1为左键,Button-2为中键),你需要把绑定事件改成这个。

修改后的代码如下:

proc Kuser {} {
  echo "AAA" 
}

proc getxy_of_mouse_pointer {} {
  gui_mouse_tool -window Layout.1 -start POINT_DEFINITION_TOOL
  # 绑定右键点击事件,用花括号包裹脚本避免立即执行
  bind . <Button-3> {Kuser}
  echo "Hello"
}

关键修改说明:

  1. 事件替换:将<Button-1>改为<Button-3>,对应右键点击触发。
  2. 脚本包裹:把[kuser]替换为{Kuser},花括号会让Tcl把内容当作待触发的脚本字符串,只有当右键点击事件发生时,才会调用Kuser过程。

修改后执行getxy_of_mouse_pointer时会先输出Hello,之后只有右键点击窗口时,才会执行Kuser并输出AAA。

内容的提问来源于stack exchange,提问作者Cha Cha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:28:21