Skip to content

Commit a402a20

Browse files
committed
Added program 9, toggle butons
1 parent 5ee5d11 commit a402a20

File tree

4 files changed

+84
-3
lines changed

4 files changed

+84
-3
lines changed

8-Spinbox.pl

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
my $window = Gtk3::Window->new('toplevel');
1111
$window->set_title("Spinbox Example");
1212
$window->set_position("mouse");
13-
$window->set_default_size(200, 50);
13+
$window->set_default_size(250, 100);
1414
$window->set_border_width(5);
1515
$window->signal_connect (delete_event => sub { Gtk3->main_quit });
1616

@@ -26,11 +26,22 @@
2626

2727
my $zero_button = Gtk3::Button->new('Zero');
2828
$hbox->pack_start($zero_button, FALSE, FALSE, 0);
29-
$zero_button->signal_connect (clicked => \&zero, "zero");
29+
$zero_button->signal_connect ( clicked => \&zero );
3030

3131
my $check_accuracy = Gtk3::CheckButton->new_with_label('High accuracy');
3232
$hbox->pack_start($check_accuracy, FALSE, FALSE, 0);
33-
$check_accuracy->signal_connect (toggled => \&toggle_accuracy, "accuracy");
33+
$check_accuracy->signal_connect ( toggled => \&toggle_accuracy );
34+
35+
my $hbox2 = Gtk3::Box->new("horizontal", 5);
36+
$vbox->pack_start($hbox2, FALSE, FALSE, 0);
37+
38+
my $update_button = Gtk3::Button->new('Update');
39+
$hbox2->pack_start($update_button, FALSE, FALSE, 0);
40+
$update_button->signal_connect ( clicked => \&update );
41+
42+
my $label = Gtk3::Label->new("No Value");
43+
$hbox2->pack_start($label, FALSE, FALSE, 0);
44+
3445

3546
$window->show_all;
3647
Gtk3->main;
@@ -49,3 +60,7 @@ sub toggle_accuracy{
4960
$spin->set_digits(1);
5061
}
5162
}
63+
64+
sub update {
65+
$label->set_label( $spin->get_value );
66+
}

9-Toggle-Button.pl

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#! /usr/bin/perl
2+
3+
use strict;
4+
use warnings;
5+
use diagnostics;
6+
use feature ':5.14';
7+
use Gtk3 '-init';
8+
use Glib qw/TRUE FALSE/;
9+
10+
my $window = Gtk3::Window->new('toplevel');
11+
$window->set_title("Spin and toggle Example");
12+
$window->set_position("mouse");
13+
$window->set_default_size(250, 100);
14+
$window->set_border_width(5);
15+
$window->signal_connect (delete_event => sub { Gtk3->main_quit });
16+
17+
my $vbox = Gtk3::Box->new("vertical", 5);
18+
$window->add($vbox);
19+
20+
my $adjust = Gtk3::Adjustment->new(5, 0, 10, 1, 10, 0);
21+
my $spin = Gtk3::SpinButton->new($adjust, 1, 1);
22+
$vbox->pack_start($spin, FALSE, FALSE, 0);
23+
24+
my $hbox = Gtk3::Box->new("horizontal", 5);
25+
$vbox->pack_start($hbox, FALSE, FALSE, 0);
26+
27+
my $zero_button = Gtk3::Button->new('Zero');
28+
$hbox->pack_start($zero_button, FALSE, FALSE, 0);
29+
$zero_button->signal_connect ( clicked => \&zero );
30+
31+
my $toggle_accuracy = Gtk3::ToggleButton->new_with_label('High accuracy');
32+
$hbox->pack_start($toggle_accuracy, FALSE, FALSE, 0);
33+
$toggle_accuracy->signal_connect ( toggled => \&toggle_accuracy );
34+
35+
my $hbox2 = Gtk3::Box->new("horizontal", 5);
36+
$vbox->pack_start($hbox2, FALSE, FALSE, 0);
37+
38+
my $update_button = Gtk3::Button->new('Update');
39+
$hbox->pack_start($update_button, FALSE, FALSE, 0);
40+
$update_button->signal_connect ( clicked => \&update );
41+
42+
my $label = Gtk3::Label->new("No Value");
43+
$hbox->pack_start($label, FALSE, FALSE, 0);
44+
45+
46+
$window->show_all;
47+
Gtk3->main;
48+
49+
sub zero {
50+
my ($widget, $data) = @_;
51+
$spin->set_value(0);
52+
}
53+
54+
sub toggle_accuracy{
55+
my ($widget, $data) = @_;
56+
my $value = $widget->get_active;
57+
if ( $value == TRUE ) {
58+
$spin->set_digits(2);
59+
} else {
60+
$spin->set_digits(1);
61+
}
62+
}
63+
64+
sub update {
65+
$label->set_label( $spin->get_value );
66+
}

Perl Gtk3 Tutorial.odt

21.4 KB
Binary file not shown.

Perl Gtk3 Tutorial.pdf

36.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)