我曾经在我的cygwin控制台中启动git gui没有任何问题,但是因为我更新了cygwin,我收到以下错误消息:
$ git gui
Application initialization failed: no display name and no $DISPLAY environment variable
Error in startup script: invalid command name "tk_messageBox"
while executing
"tk_messageBox -icon error -type ok -title "git-gui: fatal error" -message $err"
invoked from within
"if {[catch {package require Tcl 8.4} err]
|| [catch {package require Tk 8.4} err]
} {
catch {wm withdraw .}
tk_messageBox \
-icon error \
-typ..."
(file "/usr/lib/git-core/git-gui" line 34)
Run Code Online (Sandbox Code Playgroud)
谁知道如何解决这个问题?
我想为我的脚本制作一些图形对话框,但不知道如何.我听说过有关GTK-Server或类似的东西.如果有人知道如何将Bash与tcl/tk联系起来,我也会感到满意.
请不要发布类似"更改为C++"的内容,因为我的项目必须是Bash中的脚本; 没有其他选择.
有任何想法吗?
编辑:
谢谢你的答案,但我不希望控制台中的颜色"图形",但我可以移动的图形窗口,最小化等我会测试xmessage,但我不认为这将是我正在寻找的.
编辑2: 我不想做一个简单的对话,如是/否,但有一些界面,如进度条和按钮,类似于游戏.
在退出脚本(TCL/Bash)之前,如何确保所有后台进程都已完成执行.
我正在考虑将所有后台进程pid写入pidfile.然后在最后pgrep pidfile,看看在退出之前是否有任何进程仍在运行.
有没有更简单的方法来做到这一点?有没有TCL特定的方法来做到这一点?
我正在寻找一种非常直接的方法来从命令行获取安装在机器上的TCL版本.对于大多数编程语言来说,都是如此
languagename -v
Run Code Online (Sandbox Code Playgroud)
提供我想要的信息.这似乎不是一个选择tclsh.
echo 'puts $tcl_version;exit 0' | tclsh
Run Code Online (Sandbox Code Playgroud)
但我想知道是否还有更直接和跨平台的东西?(我怀疑这会在微软操作系统上失败.)
-
编辑:只是为了强调我正在寻找可以直接从操作系统命令行执行的东西.一旦你开始有各种各样的信息tclsh,但我正试图避免这种情况来简化自动发现.
是否有一个等效的expr命令适用于复数(代表两个双打的列表)?
该库提供了复数运算的函数,这似乎是定义所需cexpr函数的有用实用程序,但它不能很好地工作.
例如,它没有正确处理括号.
ParseExpressions::ParseExpr { (1) + ((2) + (3)) } { }
Run Code Online (Sandbox Code Playgroud)
回报
+ [+ 1 ((2)] (3))
Run Code Online (Sandbox Code Playgroud)
虽然它应该回来
+ [+ 1 2] 3
Run Code Online (Sandbox Code Playgroud)
还有ParseExpressions :: ParseExpr {{1 2} + {3 4}} {}
回报
+ 1 2 3 4
Run Code Online (Sandbox Code Playgroud)
虽然它应该回来
+ {1 2} {3 4}
Run Code Online (Sandbox Code Playgroud)
所以基本上我要求这个实用程序的强大版本.
我有一个'exec'rpmbuild的tcl脚本.这样做时,rpmbuild使用的'topdir'是错误的.我的主目录中有一个.rpmmacros文件,如果我手动调用rpmbuild,它工作正常,即.'topdir'不是默认值.
我在tcl脚本中添加了[exec rpmbuild"--showrc"]以检查topdir的值,它显示'-14:_topdir%{_ usrsrc}/redhat'这是默认值.
有人能解释我为什么会出现这种情况以及如何解决这个问题?
我宁愿不用--define指定它,因为它实际上是在makefile中完成的,我不想触摸它(如果没有其他选择,我会这样做).
我正在使用macOS 10.12.1 Sierra.我使用的是Python 2.7.12
brew install python
Run Code Online (Sandbox Code Playgroud)
但是IDLE给出了警告
WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
Run Code Online (Sandbox Code Playgroud)
果然,它经常崩溃.8.5.9是macOS预安装版本.
我可以从ActiveState网站下载稳定的8.5.18 (由python推荐,它与python.org的python安装一起工作(因为他们在使用不稳定的macOS默认8.5.9之前寻找任何其他版本的Tcl/Tk) ).
但是这个下载不会影响brew安装的python IDLE,它继续使用8.5.9.
有什么我可以做的事情来链接更新的Tcl/Tk和Homebrew,或者我可以直接用自制软件安装Tcl/Tk吗?
我也注意到使用anaconda python时会出现完全相同的问题,它使用预安装的mac tcl/tk 8.5.9,而不是用户安装的tcl/tk 8.5.18.
他们的版本中的Tcl和Tk 8.6已经出现了大约六个星期.但是,可以从Tcl下载的文件具有不同的文件夹结构,并且缺少某些文件,例如tk85.lib(或tk86.lib现在)与Python中的Tcl文件夹相比.
我的问题是:如何在Python中将Tcl和Tk更新为8.6(包括集成到Tkinter)?
Python版本为2.7,操作系统为Windows 7.
Perl的
print 2 % -18;
Run Code Online (Sandbox Code Playgroud)
- >
-16
Run Code Online (Sandbox Code Playgroud)
TCL
puts [expr {2 % -18}]
Run Code Online (Sandbox Code Playgroud)
- >
-16
Run Code Online (Sandbox Code Playgroud)
但是VBScript
wscript.echo 2 mod -18
Run Code Online (Sandbox Code Playgroud)
- >
2
Run Code Online (Sandbox Code Playgroud)
为什么不同?