Python で TCL スクリプトを実行する必要があります。私の TCL スクリプトには、ユーザー定義の (内部) パッケージもあります。これらのスクリプトを試しました。
1.
import Tkinter
import socket
def TCLRun():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5006))
root = Tkinter.Tk()
## root.tk.eval('package require XXX')
tcl_script ="""
package require XXX
set YYY [COMMAND FROM PACKAGE]
puts $YYY
} """
# call the Tkinter tcl interpreter
root.tk.call('eval', tcl_script)
root.mainloop()
このエラーで:
import TCLCall
>>> TCLCall.TCLRun()
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
TCLCall.TCLRun()
File "C:\Users\XXX\Desktop\PKT\TCLCall.py", line 24, in TCLRun
root.tk.call('eval', tcl_script)
TclError: can not find channel named "stdout"
と、
2.
import Tkinter
root=Tkinter.Tk()
root.tk.eval('package require XXX')
root.tk.eval('set YYY COMMAND')
sdtout に関するエラーを返します!
もう一つの方:
3.
import subprocess
p = subprocess.Popen(
"tclsh tcltest.tcl",
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
print stdout
print stderr
次のエラーを返します。
can't find package __teapot__
while executing
"package require __teapot__"
それらのどれも機能していません。この問題で私を助けてください!
次のコードを使用して、製品で何かを操作するいくつかのコマンドを使用できます。
import socket
import time
def Sckt():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5006))
s.send('0 COMMAND \r\n')
それはあなたにいくつかのアイデアを与えるでしょう!
感謝、