【问题标题】:How to get canvas widget name from command?如何从命令中获取画布小部件名称?
【发布时间】:2018-05-05 21:55:59
【问题描述】:

我尝试制作部分由打开它的小部件定义的弹出菜单。我似乎找不到找到打开菜单的小部件的方法。例如:

.f.canvas bind all <3> {
  puts stderr "%W just gives me '.f.canvas'"
}

小部件名称将用于在另一个表中查找以更改与特定小部件相关的对象的属性。

【问题讨论】:

  • 画布的绑定小部件命令适用于画布中的项目。如您所见,画布窗口名称是固定的。您需要提供更多代码和信息来说明您正在尝试做什么。

标签: tcl tk


【解决方案1】:

试试

.f.canvas bind all <3> {
    puts stderr [%W find closest %x %y]
}

它应该显示您单击的项目的 ID。

【讨论】:

  • 如果他使用滚动,可能需要canvasxcanvasy 方法来转换坐标。
【解决方案2】:

当我在 Tk 文档中寻找画布的其他内容时,我遇到了the current tag

标签current由Tk自动管理;它适用于 当前项目,它是绘制区域覆盖当前项目的最顶层项目 鼠标光标的位置(不同的项目类型在 不同的方式;有关详细信息,请参阅单个项目类型文档)。 如果鼠标不在画布小部件中或不在项目上,则 没有项目具有当前标签。

使用示例:

.f.canvas bind all <3> {
  puts stderr "widget [%W find withtag current] says hello"
}

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多