2011-04-06 2 views
4

Tcl/Tk와 C로 작성된 Pure Data에서 많은 작업을하고 있습니다. Tcl/Tk GUI를 수정하기위한 플러그인 용 Python API를 만들고 싶습니다. 이를 위해, 나는 실행중인 Tk 인스턴스를 파이썬에 전달할 수 있어야하고, Tkinter가 그 명령에 Tcl/Tk 인스턴스를 사용하도록해야합니다. 그래서 같은 :이미 실행중인 Tcl/Tk 앱에 Python/Tkinter를 연결하는 방법이 있습니까?

root = Tk(pid_of_running_app) 
+0

Tkinter가 이미 실행중인 Tcl/Tk 인스턴스를 실행하기보다는 Tkinter를 사용하도록하는 것이 목표라고 말해야합니다. –

답변

5

send 명령을 한 번 봐, 당신은 정확하게 (TK 응용 프로그램이 아닌 일반 티클 응용 프로그램) 할 수 있습니다. Emacs (Tk 응용 프로그램 실행에 연결)에서 항상이 작업을 수행합니다.

Tcl/Tk는 다른 프로세스를 종속시키지 않지만, send 명령을 사용하면 원하는 명령을 쉽게 보낼 수 있습니다. [winfo interps]을 사용하여 다른 통역사의 "이름"을 찾으십시오 (참고 : Tk 응용 프로그램의 이름은 [tk appname]으로 얻을 수 있습니다.) 다른 통역사에서 실행하려는 명령은 다른 통역사가 보낸 것입니다.

send $other_app tk_dialog . "Sample Dialog" "See, it's this easy." "" 0 Ok 
+0

나는 Tcl/Tk의 send를 알고 있지만 send를 사용하여 Tkinter가 자신의 인프라를 완전히 작성하지 않고 실행중인 Tcl/Tk app에 명령을 보내는 것을 보지 못했다. Tkinter는 Tcl/Tk 인스턴스를 시작합니다. 대신 Tkinter가 Tcl/Tk의 기존 인스턴스를 사용하도록 지시 할 수 있기를 바랍니다. –

+0

@ Hans-Christoph Tkinter는 다른 프로세스에 대한 포털로 작성된 것이 아니며, Python 환경에서 Tk 위젯을 제공하기 위해 작성되었습니다. 즉,'send'는 명령을 그대로 전송하기 때문에 명령 문자열을 작성한 후 보내야합니다. –

1
옵션은 사용할 수 있습니다

평가 TK에 내장 된 send 인프라 (트레이 언급 등) 또는 Tcllib에서 comm 패키지를 사용합니다. 파이썬에서 직접 통신 프로토콜을 이야기 할 수 있어야한다,하지만 난했습니다 세부 사항을 들여다 보지 않으므로 길을 인도 할 수 있습니다.

0

2 개의 소켓 사이에서 통신하려면 소켓을 사용할 수 있습니다. 앱.

관련 문제