Perl-приложение с графическим интерфейсом для Windows 7

Я сделал довольно много поиска, но не могу найти актуальный ответ.

В настоящее время я переписываю приложение, написанное на Perl. Так что я не начинаю с нуля.

В настоящее время приложение уже имеет базовый графический интерфейс, написанный на C# .net, но одна из моих целей - создать новый улучшенный графический интерфейс. Этот графический интерфейс должен реализовывать несколько функций, чтобы действительно облегчить мою рабочую нагрузку, если бы я мог использовать конструктор графического интерфейса, как в.net

Теперь мой вопрос:

Я хотел бы отделить графический интерфейс и логику Perl. Так что теоретически это должно работать, если созданный мной GUI просто вызывает различные сценарии Perl ->, которые что-то делают, а затем возвращают что-то в GUI.

Кто-нибудь имел опыт использования созданного на C#.net GUI для взаимодействия с различными сценариями Perl? Если да, не могли бы вы рассказать мне о положительных или отрицательных вещах, которые вы заметили во время своего опыта?

Я также играл с TKX. Я полагаю, я мог бы использовать это, но это демонстративно увеличило бы время разработки. Кто-нибудь знает конструктор GUI, который генерирует код Perl TKX?

Я также смотрел на других, таких как TK,QT,... но главная проблема в том, что все они имеют зависимости.

Буду признателен за любые советы. Спасибо

2 ответа

Решение

Вы хотите иметь новый графический интерфейс в C#? Visual Studio имеет конструктор графического интерфейса для WinForms и WPF. WinForms-компоновщик вполне нормален, но WPF-версия - скорее всего дерьмо, и лучше "вручную" кодировать код XAML самостоятельно и использовать компоновщик только для визуализации того, что вы создаете. Для серьезной работы с анимацией / шаблонами я рекомендую Blend.

Я никогда не выполнял сценарии Perl, но процесс не будет отличаться для выполнения других внешних программ, если ваш интерпретатор Perl не имеет приличного API.Net.

Для выполнения сценариев "стандартным способом" вы можете использовать класс Process из пространства имен System.Diagnostics. Вы можете ввести аргументы командной строки или stdin и прочитать stdout и stderr. Единственное, о чем вам следует беспокоиться, это то, что если внешняя программа зависает, помещает что-то в stderr, но не завершается, вы можете застрять. Вы должны прочитать stdout и stderr сценария одновременно (каждый в отдельном потоке), и процесс также должен быть создан и запускаться в собственном потоке - чтобы вы не повесили свое приложение, вы могли отслеживать процесс и предлагать пользователю кнопку "отмена",

Хорошая вещь для этого - класс BackgroundWorker из пространства имен System.ComponentModel.BackgroundWorker, который может обрабатывать множество "низкоуровневых потоков".

ActiveState, кажется, выпустил для sourceforge программу с именем GUI Builder. Похоже, что он совместим с Perl, Ruby, TCL и Python.

Другие вопросы по тегам