tcl tk 为选项卡绑定虚拟事件

tcl tk binding virtual events for tabs

我正在尝试将事件绑定到在 tcl tk 应用程序中打开的选项卡。 我已经将虚拟事件 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
}

<<NotebookTabChanged>> 虚拟事件中唯一有用的信息是它所谈论的 ttk::notebook 小部件(%W 替换, 大写 瓦)。要找出新的 current 选项卡是什么选项卡,您必须在活动中询问小部件。

$theNotebookWidget index current

虽然要获取与当前选项卡相关联的小部件的名称,但您实际上使用 select 方法而不使用其他参数:

$theNotebookWidget select

来自the manual

pathname select ?tabid?
Selects the specified tab. The associated slave window will be displayed, and the previously-selected window (if different) is unmapped. If tabid is omitted, returns the widget name of the currently selected pane.