我正在尝试将事件绑定到tcl tk应用程序中的tab开头。 我已经将虚拟事件NotebookTabChanged绑定到任何时候更改选项卡,但是我不知道如何获取所选的选项卡。
以下是我想要做的事情的想法。显然,它不是真正的tcl tk代码。
ttk::notebook .gui.tframe3.tpanedwindow4.notebook0
bind .gui.tframe3.tpanedwindow4.notebook0 <<NotebookTabChanged>> {GUITabOpen %w}
ttk::frame .gui.tframe3.tpanedwindow4.notebook0.tframe1 -borderwidth {0} -relief {flat} -width {30} -height {30}
...
proc GUITabOpen { {w 0} } {
if {##The tab selected is tframe1###} {
#do some action related to tframe1
}
答案 0 :(得分:3)
<<NotebookTabChanged>>
虚拟事件中唯一有用的信息是它所讨论的ttk::notebook
窗口小部件(%W
替换,资本 W)。要找出新当前标签的哪个标签,您必须在活动中询问小部件。
$theNotebookWidget index current
虽然要获取与当前选项卡关联的窗口小部件的名称,但实际使用select
方法而没有其他参数:
$theNotebookWidget select
来自the manual:
路径名 选择? tabid ?
选择指定的选项卡。将显示关联的从属窗口,并且未映射先前选择的窗口(如果不同)。如果省略 tabid ,则返回当前所选窗格的窗口小部件名称。