1

我正在尝试构建一个面板应用程序,例如前卫窗口导航器或 ubuntu unity。

我的问题是,一旦我使用预定义的应用程序构建面板,我如何在应用程序打开或启动时向面板添加项目?

这是我在 tcl 中的源代码:

package require Tk

set items {xterm gvim firefox}
wm withdraw .
toplevel .panel
wm attributes .panel -topmost 1 ; # on top
bind .panel <Escape> {exit}
wm geometry .panel +0+0
wm overrideredirect .panel yes ; # remove window decorations

set counter 0
foreach item $items {
    incr counter
    set separator " "
    label .panel.$counter -text "$item$separator" -bg black -fg white \
    -font {-family "Fixedsys Excelsior 3.01" -size 12}
    grid .panel.$counter -column $counter -row 0
}

是否有任何终端、tcl 或 python 命令可以实现这一点?

欣赏任何见解。先感谢您。

4

1 回答 1

2

如果该send命令已打开(这取决于与显示器安全性相关的各种因素),您可以告诉它侦听“知名名称”,然后使用另一个小应用程序send发送脚本来评估.

在面板中,听一个“好”的名字:

package require Tk
tk appname MyExcellentPanel
proc registerItem args {
   # How to do the registration of things here
}

在帮助脚本中:

#!/usr/bin/env wish
package require Tk
wm withdraw .                               ;  # IMPORTANT! Don't show a GUI here
send MyExcellentPanel registerItem $argv    ;  # The magic command
exit                                        ;  # IMPORTANT! Exit now

现在,您可以使用 shell 脚本或任何地方的小脚本向面板发送指令以注册某些内容。就这么简单。


如果该send命令不存在,请尝试Tcllib 中的commcomm::comm send包,它与send. 但是,没有什么完全一样的,tk appname因为没有可移植的方法来注册端口映射(comm 使用本地 TCP 通道),因此您需要找到一种方法来传达该信息(一个众所周知的地方的文件?)。唉,我对它不是很有经验,所以我不能真正提供详细的建议。

于 2013-01-02T23:30:34.800 回答