17

Вопрос по python – Знаете какие-нибудь творческие способы взаимодействия Python с Tcl?

Здесь ситуация. Компания, в которой я работаю, имеет довольно мало Tcl-кода, но некоторые из них хотят начать использовать python. Было бы неплохо иметь возможность повторно использовать существующий код Tcl, поскольку эти деньги уже потрачены. Кроме того, некоторое испытательное оборудование имеет только API-интерфейсы Tcl.

Итак, один из способов, о которых я подумал, - использовать модуль подпроцесса для вызова некоторых сценариев Tcl.

  • Is subprocess my best bet?
  • Has anyone used this fairly new piece of code: Plumage? If so what is your experience (not just for Tk)?
  • Any other possible ways that I have not considered?
  • Спасибо за чаевые. Насколько хорошо это работает с другими установленными библиотеками Tcl?

    от Jay Atkinson
  • После всего этого, вы поняли, что это обычно быстрая работа по [загрузке] любых необходимых двоичных файлов, чтобы расширения работали как задумано?

    от
  • Да и нет: я знаю только о Typcl под Unix, но все его части кроссплатформенные; меня не удивит, если немного "релятивизировать" путей было достаточно, чтобы заставить его работать под Windows. В любом случае уже упоминавшаяся вики-страница указывает на другие варианты этой темы, которыеhave осуществлялось под Windows.

    от
  • Интересно. Я так понимаю, это для систем Unix, а не для Windows?

    от Jay Atkinson
  • Правильныйcould создать решение с помощью SWIG, но оно не столь прямое решение, как «импорт Tkinter»; или Typcl-подобные проекты.

    от
  • Еще раз спасибо TokenMacGuy. Это очень помогает. Несмотря на то, что я работал с Python в течение достаточно долгого времени, я никогда не изучал модуль Tkinter (сам предпочитал wxPython). Я просто подумал, что это были чисто графические виджеты, а не Tcl, встроенные в Python. Эта последняя ссылка была очень полезной.

    от Jay Atkinson
  • Хм. Если подумать, комментарий о том, что он не знает о других установках TCL, может зависеть от особенностей платформы. На бинарной установке Windows, по крайней мере, нет возможности использовать другой TCL. Я не удивлюсь, если сборка из исходного кода может использовать любой доступный tcl.

    от
  • Я думаю, что это используется для упаковки кода C или C ++ с языками более высокого уровня.

    от Jay Atkinson
  • Не могли бы вы объяснить свой пример tcl? Меня смущают несбалансированные кавычки и обратные команды.

    от
  • 3

    Это можно сделать.

    http://wiki.tcl.tk/13312

    Конкретно посмотрите на расширение typcl.

    Typcl is a bit weird... It's a an extension to use Tcl from Python. It doesn't really require CriTcl and could have been done in standard C.

    This code demonstrates using Tcl as shared library, and hooking into it at run time (Tcl's stubs architecture makes this delightfully simple). Furthermore, Typcl avoids string conversions where possible (both ways).

  • 19

    Я надеюсь, что вы готовы к этому. Стандартный Python

    import Tkinter
    tclsh = Tkinter.Tcl()
    tclsh.eval("""
        proc unknown args {puts "Hello World!"}
        }"!dlroW olleH" stup{ sgra nwonknu corp
    """)
    

    Edit in Re to comment: Интерпретатор tcl Python не знает о других установленных компонентах tcl. Вы можете справиться с этим, добавив расширения обычным способом в фактически используемый Python tcl. Вот ссылка с некоторыми подробностями

    How Tkinter can exploit Tcl/Tk extensions

  • 0

    Я сам этим не пользовался, но SWIG может вам помочь:

    http://www.swig.org/Doc1.1/HTML/Tcl.html