在Tcl \ Tk

时间:2015-12-08 09:23:38

标签: events tcl bind tk

我有一个非常大的Tcl / Tk应用程序,有很多小部件。为了便于访问以修改窗口小部件配置而不必在控制台中按每个窗口小部件/配置参数键入它,我想为此构建一个对话框。 为此,我需要一个选项来轻松选择要配置的小部件。 我想写一个函数,让用户可以单击应用程序中的任何窗口小部件(任何对话框)并检索窗口小部件路径。 任何想法?

1 个答案:

答案 0 :(得分:0)

您可以使用winfo containing将全局坐标(例如,从<Button-1>绑定的%X%Y)转换为窗口小部件名称:

bind . <Button-1> {
    set w [winfo containing %X %Y]
    puts "You clicked on $w"
}

请注意,这可以与其他绑定进行非常明显的交互!您可能需要使用grab进行调查(小心;全局抓取会导致麻烦!)并配置-cursor以告知用户发生了什么。这是非常可行的,但有些想法可能是必要的,使它按照你想要的方式工作。

(您是否知道winfo containing是大多数拖放处理核心功能的脚本化界面?它完全使用系统将位置映射到窗口......)