Perl模块用于创建简单的Microsoft Windows GUI?

6 windows perl user-interface

我想为我的Perl程序创建一个简单的Windows GUI.它基本上需要生成一个窗口,将日志信息写入文本框,并有一个输入框和几个开始/停止按钮.

有没有人有关于我使用哪个Perl模块的提示?像Qt一样工作的人,这可能是一种偏好,但我并不感到困扰.

Sin*_*nür 7

对于这样一个简单的项目,我确实使用过Win32 :: GUI一次.主窗口有一个菜单,一个文本框和几个按钮和复选框.有效.

摘自设置GUI的方法(只是为了给你一个想法):

my @menu_items = (
    '&File' => 'File',
    ' > &Open'   => {
        -name    => 'FileOpen', 
        -onClick => sub { $self->onFileOpen(@_) },
    },
    ' > &Close'  => { 
        -name    => 'FileClose',
        -onClick => sub { $self->onFileClose(@_) },
    },
    ' > E&xit'   => { 
        -name    => 'FileExit',
        -onClick => sub { $self->onFileExit(@_) },
    },
    '&Help' => 'Help',
    ' > &About'  => { 
        -name    => 'About',
        -onClick => sub { $self->onHelpAbout(@_) },
    },
);

$self->set_main_menu( Win32::GUI::MakeMenu(@menu_items) );

my $window = $self->set_main_window(
    Win32::GUI::Window->new(
        -menu => $self->get_main_menu,
        -name => 'Main',
        -sizable => 0,
        -resizable => 0,
        -hasmaximize => 0,
        -maximizebox => 0,
        -title => $self->get_program_name,
        -onTerminate => sub { -1 }, 
        -onTimer => sub { $self->onTimer(@_) },
    ),
);

$self->set_log_field(
    $window->AddTextfield(
        -name => 'Log',
        -font => Win32::GUI::Font->new(
            -name => 'LogFont',
            -face => 'Courier New',
            -size => 9,
        ),
        -multiline => 1,
        -wantreturn => 1,
        -autovscroll => 1,
        -vscroll => 1,
        -readonly => 1,
    ),
);

$self->get_log_field->MaxLength(40000);

$self->set_status_bar(
    $window->AddStatusBar(
        -name => 'Status',
        -text => $self->get_program_name,
    ),
);
Run Code Online (Sandbox Code Playgroud)


Cha*_*ens 6

你有几个选择:

我偏爱Gtk2.它可以通过CamelBox安装程序轻松安装在MS Windows中.

一个简单的"hello world"风格的应用程序看起来像

#!/usr/bin/perl

use strict;
use warnings;

use Gtk2;

Gtk2->init;

my $window = Gtk2::Window->new;
my $vbox   = Gtk2::VBox->new;
my $label  = Gtk2::Label->new("Hello World");
my $button = Gtk2::Button->new("Press me");

$window->add($vbox);
$vbox->add($label);
$vbox->add($button);

my $i;
$button->signal_connect(clicked => sub {
    $label->set_text("button pressed " . ++$i . " times");
});

$window->signal_connect(destroy => sub { Gtk2->main_quit });

$window->show_all;

Gtk2->main;
Run Code Online (Sandbox Code Playgroud)


Dem*_*emi 0

使用 Perl/Tk