Должен ли я использовать Perl / Tk, Tcl :: Tk или Tkx для графического интерфейса Perl? - PullRequest
16 голосов
/ 08 августа 2009

Мне действительно нравится Perl/Tk, но я пришел к мнению, что это DOA. Я думаю, Tcl::Tk и Tkx - лучшие решения. Предположим, я сбросил Perl/Tk. Является ли «наиболее поддерживаемый» маршрут для использования с Tcl::Tk (который не обновлялся с 2007 года и автор которого, по-видимому, недоступен) или Tkx? Кто-нибудь из них активно используется / поддерживается?

Ответы [ 3 ]

16 голосов
/ 08 августа 2009

Под капотом оба Tcl :: Tk и Tkx используют модуль Tcl в качестве моста к Tcl / Tk. Разница в API, который они представляют для Perl.

Tkx был разработан ActiveState, который использует его в графическом интерфейсе для своих инструментов. (например, PPM) Он активно используется, хотя трудно сказать, насколько широко. Он также поддерживается, но из-за того, что он так тонок, как Tcl, не так уж много поддержки. В каком-то смысле это хорошо - мало что можно изменить или сломать, но это создает впечатление оставленной программы.

Tcl :: Tk начинался как побочный проект, чтобы продемонстрировать, что API-совместимость с Perl / Tk возможна. Мне нравится идея этого - было бы замечательно, если бы нужно было только изменить use Tk на use Tcl::Tk и получить преимущества от более новых версий Tcl / Tk, таких как поддержка тайлов (тем). К сожалению, это еще не там. Кажется, что проделана определенная работа, но не так много. Это действительно может использовать больше разработчиков.

Лично я использую Tkx. Если у вас есть опыт разработки в Perl / Tk, переход не слишком болезненный, но я думаю, что это будет трудное начало. Хуже всего то, что вам нужно обратиться к Tcl / Tk документации , чтобы использовать ее. Прекрасно, если вы знаете Tcl, поскольку мост через Perl преподнес очень мало сюрпризов, но если вы этого не сделаете, то переводить с незнакомого языка неловко.

8 голосов
/ 08 августа 2009

У меня был хороший результат с wxPerl , , вот небольшая статья на O'Reilly

Примечание: Я нацелился на win32, и это было около 5 лет назад.

2 голосов
/ 27 февраля 2019

( Отказ от ответственности : я поддерживаю Tcl :: pTk и отправил материалы в Perl / Tk, Tcl / Tk, Tcl :: Tk и Tkx.)

Обновление на 2019 год:

В Perl / Tk были выпуски за последние несколько лет и с тех пор разработка , но сопровождающий признает, что у него недостаточно времени для серьезных улучшений, таких как , включая отличается от Tcl / Tk 8.5 + . Любой, кто хочет использовать функции или улучшения в новых версиях Tcl / Tk, может быть заинтересован в использовании одного из модулей-оболочек Tcl / Tk (которые обеспечивают доступ к полной отдельной установке Tcl / Tk из Perl, а не помещают все Tk в одном модуле Perl).

  • Если вы работаете над новым проектом и вам нравится синтаксис Perl / Tk, вам может пригодиться Tcl :: Tk , более легкая оболочка, которая использует Perl / Tk-подобный синтаксис , также позволяя синтаксис Tcl / Tk. В прошлом году Tcl :: Tk провел некоторые ремонтные работы.

  • Однако, если у вас есть существующая программа на Perl / Tk, вы можете вместо этого попробовать Tcl :: pTk . Он основан на Tcl :: Tk, но подчеркивает совместимость с синтаксисом Perl / Tk в существующих программах. Модуль Tcl :: pTk :: TkHijack позволяет довольно легко опробовать Tcl :: pTk, перехватывая операторы use Tk;. Tcl :: pTk все еще находится в стадии разработки, но пробная версия с другими программами помогает найти то, что еще нуждается в улучшении.

  • Или, если вы не знакомы с Perl / Tk, более знакомы с фактическим синтаксисом Tcl / Tk или знакомы с оболочками для языков (например, Tkinter для Python), лучшим вариантом может быть Tkx. Как указывает Мишель Карман , Tkx не видел много технического обслуживания с 2010 года, но главным образом потому, что ему не нужно много; поскольку улучшения продолжают вноситься в Tcl / Tk, Tkx обычно может воспользоваться ими автоматически. В не зависящих от языка учебниках на TkDocs.com приведены примеры синтаксиса Tkx.

Я обнаружил Tcl :: pTk в прошлом году и с тех пор стал его сопровождающим. Я в основном использую его для того, чтобы использовать встроенный в MacOS аква-интерфейс (вместо XQuartz, как в Perl / Tk), о чем другие активные пользователи также сообщают, что используют его.

...