Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python和TCL:如何运行需要控制台的脚本_Python_Tkinter_Tcl - Fatal编程技术网

python和TCL:如何运行需要控制台的脚本

python和TCL:如何运行需要控制台的脚本,python,tkinter,tcl,Python,Tkinter,Tcl,我正在尝试从Python运行TCL脚本。我在TCL脚本(我必须使用)中包含了一个第三方TCL包,它可以调用“console”。因此,如果我只运行以下命令: 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

我正在尝试从Python运行TCL脚本。我在TCL脚本(我必须使用)中包含了一个第三方TCL包,它可以调用“console”。因此,如果我只运行以下命令:

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"
pydev调试器:正在启动
警告无法从Appinfo添加路径:找不到Appinfo注册表项
警告无法从Appinfo添加路径:找不到Appinfo注册表项
回溯(最近一次呼叫最后一次):
文件“C:\Users\lab\Documents\Public\eclipse\plugins\org.python.pydev_2.7.5.2013052819\pysrc\pydevd.py”,第1397行,在
运行(安装程序['file'],无,无)
文件“C:\Users\lab\Documents\Public\eclipse\plugins\org.python.pydev_2.7.5.2013052819\pysrc\pydevd.py”,第1090行,正在运行
pydev_imports.execfile(文件、全局、局部)#执行脚本
文件“C:\Users\lab\Documents\Public\workspace\Version 1\....\TC1.py”,第55行,在
测试()
文件“C:\Users\lab\Documents\Public\workspace\Version 1\..\TC1.py”,第42行,测试中
z=x.tk.eval('sourcec:/Users/lab/Documents/Public/TCL/Scripts/GetStatsFirst2.TCL')
_tkinter.TclError:无效的命令名“console”

这肯定与我使用的软件包有关,问题可能是不可避免的。由于没有打开的TK控制台(因为我使用的是TK inter类和
eval
),我感觉有一种方法可以解决这个问题。在我看来,我导入的包需要TK控制台的存在。当在命令行上或通过
subprocess.call
运行时,一切都正常,但在这些情况下,会打开控制台。我很确定这个软件包实际上是在寻找一个控制台。有没有一种方法可以将控制台与Tk对象一起创建?

Ahh,即
console
命令

console命令仅可用

  • 在窗户上
  • 只是心甘情愿
  • 只有在主界面中
我建议你改用tkcon。您只需找到
tkcon.tcl
文件,在源代码
GetStatsFirst2.tcl
之前对其进行源代码处理,并执行以下tcl命令:

interp alias {} console {} tkcon
这将使用tkcon作为控制台

编辑:您可以使用

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

在Python中。

您给出的命令是tcl命令,但问题是如何从Python/tkinter脚本中使用tcl。你的答案没有多大帮助。@BryanOakley那么
源代码是什么?python命令?op知道如何评估Tcl命令。嗨,Johannes,这似乎做了些什么,因为我现在得到了一个不同的错误。剧本可能更进一步了。我想我会把你的回答标记为答案。它说它不能加载dll。该dll特定于我必须加载的TCL库。我不知道发生了什么事。但这可能与此有关:{警告!!!无法从Appinfo添加路径:找不到Appinfo注册表项警告!!!无法从Appinfo添加路径:找不到Appinfo注册表项}