LINUX.ORG.RU

Ответ на: комментарий от AITap
#!/usr/bin/perl
use warnings;
use strict;
use Prima qw(Application Calendar StdDlg MsgBox Buttons);

$::application->wantUnicodeInput(1);

my $mw = Prima::MainWindow::->new(
	text => "Calendar",
	size => [400,300],
);
$mw->insert(Calendar =>
	useLocale => 0,
	onChange => sub { print $_[0]-> date_as_string, "\n"; },
	pack => {expand => 1, fill => 'both'},
);
$mw->insert(Button =>
	text => "file",
	onClick => sub {
		my $open = Prima::OpenDialog-> new(
                	filter => [
	                        ['All files' => '*']
	                ],
			system => 1,
	        );
	        message $open->fileName if $open->execute;
	},
	pack => {expand => 1, fill => 'both'},
);
run Prima;
AITap ★★★★★ ()
Ответ на: комментарий от AITap

что-то не могу найти, где прочитать про packing? Как-то в доках вскользь про это. Может, это какая-то общепринятая концепция?

bvn13 ★★★★★ ()
Ответ на: комментарий от AITap

Можно вопрос в рамках этого треда?

Все хорошо создается через $mw->insert, а если мне в одном виджете надо поменять значение другого? Например, разместить InputLine, а по кнопке выбора файле менять строку в InputLine. Я так понимаю, что надо создавать my $il = Prima::InputLine->create(...), а потом как-то это добавить в MainWindow ? Только не пойму, как добавить его...

bvn13 ★★★★★ ()
Ответ на: комментарий от bvn13

Есть 2 способа. Во-первых, ссылка на виджет возвращается из insert, и можно воспольваться ею. Во-вторых, можно добавить к хэшу параметров ключ name и вызвать у $mw метод с этим именем, он тоже вернёт ссылку на виджет.

#!/usr/bin/perl
use warnings;
use strict;
use Prima qw(Application StdDlg Buttons InputLine);
my $mw = Prima::MainWindow::->new(
	text => "Buttons",
	size => [300,50],
);
my $line = $mw->insert(InputLine =>
	name => "myline",
	pack => { expand => 1, fill => 'x', side => 'left' },
);
$mw->insert(Button =>
	text => "by reference",
	onClick => sub {
		my $open = Prima::OpenDialog-> new(
                	filter => [
	                        ['All files' => '*']
	                ],
			system => 1,
	        );
		$line->text($open->fileName) if $open->execute;
	},
	pack => {expand => 1, fill => 'x', side => 'left'},
);
$mw->insert(Button =>
	text => "by name",
	onClick => sub {
		my $open = Prima::OpenDialog-> new(
                	filter => [
	                        ['All files' => '*']
	                ],
			system => 1,
	        );
		$mw->myline->text($open->fileName) if $open->execute;
	},
	pack => {expand => 1, fill => 'x', side => 'left'},
);
run Prima;
AITap ★★★★★ ()

Про perl-iup может кто-нибудь сказать - стоит ли связываться, или лучше Prima?

anonymous ()
Ответ на: комментарий от anonymous

мне прима понравилась. Просто, функционально.

bvn13 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.