Что такое хорошие варианты для инструментариев Windows GUI для программы Perl?

Я обычно использую сценарии SQL для заполнения данных в сценарии, который Вы обсуждаете.

Это просто и очень легко повторяемо.

13
задан brian d foy 21 September 2009 в 16:13
поделиться

7 ответов

В perlfaq3 перечислен ряд параметров, а также некоторые дополнительные, которых нет. Я знаком только с интерфейсами, основанными на Tk.

Perl / Tk имеет самый "перлишний" интерфейс, но не имеет ' t был обновлен, чтобы воспользоваться преимуществами поддержки плитки (нативный / тематический виджет) в текущей версии Tk (и, вероятно, никогда не будет). Tkx использует мост, отличный от Tk. Он позволяет получить доступ ко всему в Tk (и это тоже быстрее), но синтаксис менее изящный. Tkx разработан как тонкая оболочка над Tk; вам придется обращаться к документации Tk по большинству вопросов и переводить для использования с Perl. Модуль Tcl / Tk использует тот же мост, что и Tkx, но поддерживает синтаксис, в основном такой же, как у Perl / Tk.

Нужно ли вам что-либо компилировать, зависит от того, какую версию Perl вы используете. Если вы используете Strawberry Perl, вам, вероятно, придется что-то компилировать, независимо от того, какой инструментарий вы выберете. Дистрибутивы ActivePerl включают Tkx где-то в цикле 5.8.x и перестали связывать Tk с 5.10, хотя он все еще доступен через PPM. Tcl / Tk доступен из CPAN, но мне не удалось заставить его работать с библиотекой Tk, которая поставляется вместе с ActivePerl; вам может потребоваться установить Tcl отдельно, чтобы использовать его.

Лично я использовал Perl / Tk, но теперь использую Tkx.

5
ответ дан 1 December 2019 в 22:07
поделиться

Что касается «жёсткости» интерфейса, я бы предложил старый добрый Tk . К сожалению, он выглядит довольно устаревшим и не похожим на win32.

Если вам нужны нативные виджеты, я думаю, ваши лучшие снимки будут использовать нативный графический интерфейс Windows через Win32 :: GUI или Wx . У меня нет опыта работы с Win32 :: GUI, но Wx довольно хорош. Тем не менее, у него довольно крутая кривая обучения, а интерфейс не очень "изящный". Корни C ++ немного видны (к лучшему или к худшему).

Есть несколько Tk-замен, которые на самом деле являются тонкими оболочками для Tcl / Tk (я думаю, Tcl :: Tk и Tkx). Они выглядят более современно, чем Perl / Tk, но у меня тоже нет практического опыта работы с ними. Если вы разрабатываете только для Windows, взгляните на ActivePerl, который поставляется с (я думаю) Tkx. Их менеджер пакетов ppm4 написан с его использованием и выглядит довольно красиво!

6
ответ дан 1 December 2019 в 22:07
поделиться

Хотя Tk и Qt также доступны (более общие фреймворки, изначально предназначенные для других языков, на которых вы также можете использовать Perl), и Tk, вероятно, наиболее популярен, поскольку он существует дольше всего, Win32 :: GUI , кажется, лучше всего отвечает вашим требованиям. Если вам нравятся дизайнеры графического интерфейса WISIWYG, вы можете использовать Loft поверх Win32 :: GUI, но вам не нужно этого делать, если вы предпочитаете делать все программно.

3
ответ дан 1 December 2019 в 22:07
поделиться

Я бы сам придерживался ТК. Он работает в Windows , и вы его уже знаете.

2
ответ дан 1 December 2019 в 22:07
поделиться

Я бы выбрал GTK, потому что в нем есть учебное пособие (на данный момент я использую Wx, и есть много доступного исходного кода на Perl, использующего Wx, но не официальная документация ... кроме некоторых статей, поэтому нет книги ... никаких официальных материалов), если не Qt, тоже вариант, и у него есть соответствующая документация (но я не пробовал).

У Tk очень большие проблемы, и я не буду его использовать.

Что касается ваших проблем с производительностью ... Я почти уверен, что ни одно достойное приложение не будет беспокоиться, если оно отображает 100000 или 10 ^ 100 файлов, поскольку очень немногие подходят тебе экран, чтобы вы могли обрезать .

2
ответ дан 1 December 2019 в 22:07
поделиться

Если нужно просто получить простой графический интерфейс поверх ваших сценариев, то самый простой путь - VB.NET (или C #). Это то, что я делаю.

С дизайнером Visual Studio это просто вопрос разработки формы, дважды щелкните кнопку, которая запустит обработку, добавьте код для считывания параметров из элементов графического интерфейса (например, пути к файлам в TextBox 'es) и передайте информацию в сценарий через переменные среды или параметры командной строки.

Пример из одного из моих приложений (используется реальными пользователями):

Dim inputFolder As String = txtInputDataMGFfolder.Text
Dim outputFile As String = txtOutputMGFfile.Text

Dim ws As WshShellClass = New WshShellClass

Dim objEnviron2 As IWshRuntimeLibrary.IWshEnvironment = _
 ws.Environment("PROCESS")

objEnviron2.Item("INDIR") = inputFolder
objEnviron2.Item("OUTFILE") = outputFile

'It may or may not help for this: the user dialogs for selecting 
'files may change the current directory and running the Perl
'script or one of the .pm files would fail.
ws.CurrentDirectory = appPath()

ws.Run("%COMSPEC% /K   perl -w MultRawPrepare.pl", 1, False)

Обратите внимание, что использование Windows Script Host для этого может не быть строго необходимым, но если это тогда это необходимо:

'Requires adding reference to project:
'  menu Project/Add Reference/COM/Windows Script Host Object Model
'    Note: "Windows", not "Microsoft".
'
'Note: the DLL may not be registered;
'  D:
'  cd \WINNT\system32
'  regsvr32 wshom.ocx
Imports IWshRuntimeLibrary 'For WshShellClass.

appPath () определяется следующим образом (и требует "Imports System.Reflection" в начале файла VB.NET):

Public Shared Function appPath() As String

    '"[Assembly]" requires System.Reflection
    Dim strAppDir As String = _
      Path.GetDirectoryName( _
        [Assembly].GetExecutingAssembly().GetModules(False)(0).FullyQualifiedName)
    Return strAppDir
End Function 'appPath

Пользовательский выбор файлов или папок легко добавить, но этому помогают инструкции HOW-TO и немного стандартного кода.

Экспресс-версия Visual Studio для VB.NET бесплатна.

2
ответ дан 1 December 2019 в 22:07
поделиться

Бесстыдный плагин - я нахожусь в процессе написания чистого инструментария Perl GUI, XUL :: Gui , который отображает свой GUI с помощью Firefox. Он позволяет вам делать все, что может Firefox (XUL, HTML, JavaScript, Flash, другие веб-технологии). Firefox использует собственный внешний вид ОС (или любую другую тему, которую вы хотите) и доступен для большинства платформ.

use XUL::Gui;

display Window title=>'My Application',
    Button( label=>'click me', oncommand=>sub{ shift->label = 'ouch'} );

В настоящее время он находится в стадии разработки, но, вероятно, достаточно стабилен для начала работы. Идея состоит в том, чтобы быть как можно более простым и актуальным. Почти все шаблоны являются необязательными с разумными значениями по умолчанию. Например, тег Window нужен только потому, что я хотел присвоить окну заголовок.

Модуль установлен на CPAN . Я рекомендую всем взглянуть и присылать мне запросы функций или отчеты об ошибках.

3
ответ дан 1 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: