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.
我正在尝试将事件绑定到在 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.