2010-03-25 2 views
6

elmer은 Tcl의 Python 코드를 실행할 수 있습니다. 그 반대의 경우는 어떨까요? 누구든지 파이썬에서 예제를 줄 수 있습니까?Python에서 Tcl 함수에 액세스하기위한 예제

업데이트 : 내가 대신 의 등, Tcl의 개체에 액세스 티클 함수를 호출 할 수있는 말은 이것에 의해 단순히 일부 Tcl의 코드를 실행할 수 있습니다.

답변

4

python tkinter 표준 모듈을 살펴볼 수 있습니다.이 모듈은 Tk UI에 대한 바인딩이지만 백그라운드에서 Tcl 코드를 실행합니다.

+1

예 : Tcl로 내보낼 수 있습니다. Tkinter에서 가져 오기 *; 루트 = Tk(); root.tk.eval ('puts [배열 get tcl_ 플랫폼]'); –

+0

@Colin - "Tcl 객체에 액세스 할 수 있고 Tcl 함수 등을 호출 할 수 있습니다."라는 질문에 따라 귀하의 예는 Python의 Tcl 배열에 대한 참조를 얻도록 작성하면 안됩니다 (예 : 무엇이 인쇄됩니까?) –

+1

글쎄, 나는 당신에게 아이디어를주기 위해 간단한 설명을 추가했다. 또한 나는 파이썬 <-> Tcl 통신 아마도 명령을 전달하고 어쨌든 문자열로 결과를 얻는 수준에있을 것이라고 의심, 나는 그들이 데이터 구조를 공유 할 수있을 것으로 기대하지 않을 것입니다. –

-3

이것은?

import subprocess 
subprocess.Popen("tclsh someFile.tcl", shell=True) 
+0

아니요, 방금 질문에 추가 한 설명을 읽으십시오. –

+1

이 경우 쉘을 사용할 필요가 없습니다. 'subprocess.Popen ([ ""tclsh ","someFile.tcl "])'괜찮습니다. –

1

하면 다른 모든 멀리 쉬머 수 있습니다 랩 C 레벨 Tcl_Obj *의 투명, 일반적인 경우는 단지 앞뒤로 티클의 EIA가 의미로 문자열을 교환되는 일부 사용자 지정 파이썬 객체 유형을 제공함으로써 이론적으로 가능할 수도 있지만 내부 표현은 자유롭게.

그래, 당신은 문자열보다 잘 할 수 있지만 일반적으로 그만한 가치는 없습니다. Tkinter는 이미 몇 가지 가능한 최적화가 내장되어 있으므로 거기에 훔치려 고 시도하십시오.

7

이것은 다소 오래된 스레드이지만 최근에 Tkinter.Tcl()에 비하면 파이썬 의 Tcl 인터프리터에 직접 액세스 할 수 없습니다. Tkinter.Tk()으로 Tk GUI를 생성하려면이 필요합니다.

예 ... mainfoo.tcl 읽기에서 파생 된 문자열을 반환 ... 당신이 인수로 하나의 파일 이름을 필요로 main라는 PROC와 Tcl의 파일 (foo.tcl)가 가정합니다.

from Tkinter import Tcl 

MYFILE = 'bar.txt' 
tcl = Tcl() 
# Execute proc main from foo.tcl with MYFILE as the arg 
tcl.eval('source foo.tcl') 
tcl_str = tcl.eval('main %s' % MYFILE) 
# Access the contents of a Tcl variable, $tclVar from python 
tcl.eval('set tclVar foobarme') 
tclVar = tcl.eval('return $tclVar') 

나는 이외의 반환 값을 통해 파이썬에서 Tcl의 개체에 액세스하는 또 다른 방법을 발견하지 않은,하지만 이것은 당신에게 Tcl의 발동과 인터페이스 할 수있는 방법을 제공한다. 또한 파이썬 함수를 Using Python functions in Tkinter.Tcl()