2013-10-09 53 views
0

我想從Python運行TCL腳本。我有TCL腳本中包含的第三方TCL軟件包(我必須使用它),它會調用「控制檯」。正因爲如此,如果我只是運行以下命令:python和TCL:如何運行需要控制檯的腳本

z = x.tk.eval('source C:/somePath/GetStatsFirst2.tcl') 

我收到以下錯誤:

pydev debugger: starting 
WARNING!!! Unable to add paths from Appinfo: Could not find AppInfo registry entry 
WARNING!!! Unable to add paths from Appinfo: Could not find AppInfo registry entry 
Traceback (most recent call last): 
    File "C:\Users\lab\Documents\Public\eclipse\plugins\org.python.pydev_2.7.5.2013052819\pysrc\pydevd.py", line 1397, in <module> 
    debugger.run(setup['file'], None, None) 
    File "C:\Users\lab\Documents\Public\eclipse\plugins\org.python.pydev_2.7.5.2013052819\pysrc\pydevd.py", line 1090, in run 
    pydev_imports.execfile(file, globals, locals) #execute the script 
    File "C:\Users\lab\Documents\Public\workspace\Version 1\....\TC1.py", line 55, in <module> 
    test() 
    File "C:\Users\lab\Documents\Public\workspace\Version 1\....\TC1.py", line 42, in test 
    z = x.tk.eval('source C:/Users/lab/Documents/Public/TCL/Scripts/GetStatsFirst2.tcl') 
_tkinter.TclError: invalid command name "console" 

這肯定有事情做與我使用,問題可能是不可避免的包。由於沒有開放的TK控制檯(因爲我正在使用傳統知識間的類和eval),我感覺有一種解決方法。它看起來像我要導入的軟件包需要存在TK控制檯。當在命令行或通過subprocess.call運行時,一切正常,但在這種情況下會打開一個控制檯。我很確定這個軟件包實際上是在尋找一個控制檯。有沒有辦法與Tk對象一起創建控制檯?

回答

1

啊,console命令。

控制檯命令僅可

  • 在Windows
  • 只希望
  • ,僅在主插補。

我建議你改用tkcon。你只需要你之前找到tkcon.tcl文件,源其源GetStatsFirst2.tcl並執行以下Tcl命令:

interp alias {} console {} tkcon 

它使用tkcon作爲控制檯即可。

編輯:你可以用

x.tk.eval('interp alias {} console {} tkcon') 
在Python

執行該Tcl命令。

+0

你給出的命令是一個tcl命令,但問題是關於從python/tkinter腳本使用tcl的問題。你的回答並沒有太大的幫助。 –

+0

@BryanOakley那麼什麼是'源'?一個python命令?該操作知道如何評估Tcl命令。 –

+0

嗨約翰內斯,似乎做了一些事情,因爲我現在正在得到一個不同的錯誤。劇本可能還有一點點。我想我會將你的回答標記爲答案。 – user442920

相關問題