【问题标题】:How to make a dockable window in tcl/tk?如何在 tcl/tk 中制作可停靠窗口?
【发布时间】:2013-07-22 19:43:43
【问题描述】:

在 tcl/Tk 中有没有办法使窗口可停靠,以便它可以独立存在,或者作为小部件嵌入到另一个窗口中?

我使用的是 Tcl 8.4,升级不是一个选项。

【问题讨论】:

  • 不能升级 Windows XP 吗?软件达到 EOL 后,您真的应该升级软件。
  • @JohannesKuhn,这不是我的决定。
  • 好吧,我只是试着给出一些他们应该这样做的理由,这样你就可以说服他们。

标签: tcl tk


【解决方案1】:

您只能从 Tk 8.5 开始,它将 wm managewm forget 子命令引入 wm 命令。

有关详细信息,请参阅 TIP #125 或最近的 Tk 手册页。

Tcl 8.4 在 11 年后终止,最后一个版本是 8.4.20,该行将不再有更新。

wm managewm forget 的简单示例:

package require Tk 8.5

proc undock {b widget} {
    wm manage $widget
    $b configure -command [list dock $widget] -text "Dock"
}

proc dock {b widget} {
    wm forget $widget
    grid $widget -sticky news
    $b configure -command [list undock $widget] -text "Undock"    
}

frame .docked
button .docked.undock -command { undock .docked.undock .docked } -text "Undock"
grid .docked -sticky news
grid .docked.undock -sticky news

【讨论】:

  • 您将如何在 Tk 8.5 中实现这一点?
  • 好吧,从技术上讲,您甚至可以在 8.4 中制作可停靠窗口,但只能通过作弊。您必须在新的顶层内完全重新创建窗口层次结构,这容易出错、速度慢且完全不好看。
  • 在 Tk 8.5 小部件演示器中有一个不可停靠工具栏的示例(它应该与任何 Tk 发行版一起分发,但我对这是否真的在 Linux 上完成有点模糊;我知道它是一部分官方 Tk 源代码分发和 ActiveTcl)。我写那个演示正是为了展示这种东西。
猜你喜欢
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多