Как мне создать оболочку для Tk? - PullRequest
3 голосов
/ 08 января 2012

Контекст: Windows7, дополнительно MinGW

Я думаю о написании интерфейса Tk для Lhogho . Если не считать источника Tkinter, как написать такую ​​обертку? Это было сделано для C ++, Perl, Python, Tcl и других.

1 Ответ

4 голосов
/ 09 января 2012

Это зависит от того, насколько близко вы хотите, чтобы было отображение.

Тривиальный способ - встроить интерпретатор Tcl и просто вызвать Tcl_Eval() или одну из других функций этого семейства с правильным кодом Tcl в виде строк, что довольно легко сделать, когда вы можете связать библиотеки C или DLL.

Как только вы это сделаете, вы можете начать делать свой интерфейс более естественным и, например, предоставлять сопоставления из ваших языковых структур данных с внутренними компонентами Tcl / Tk (Tcl_Obj *), в основном для повышения производительности, или добавлять соответствующие оболочки для создания привязок. более естественным для вашего языка. Основная проблема обычно заключается в том, чтобы заставить цикл событий работать должным образом с вашим языком.

Посмотрите на модуль perls tcl :: tk или питонов Tkinter для примера этого.

См: http://wiki.tcl.tk/13208

Другой способ сделать это - PerlTk, который НЕ пытался встроить полный интерпретатор Tcl. Работает, но сделать это намного сложнее, поскольку Tk использует значительный объем кода Tcl для не критичных к производительности компонентов, таких как скрипты связывания по умолчанию и т. Д.

Некоторые примеры встраивания Tcl / Tk и обсуждений можно найти по адресу: http://wiki.tcl.tk/2074

...