#!/usr/bin/env perl -l use strict; use warnings; use Tkx; { my $mw = Tkx::widget->new("."); build_gui($mw); } Tkx::MainLoop(); sub build_gui { my ($mw) = @_; configure_gui($mw); my $frame = build_framework($mw); populate_framework($frame); return; } sub configure_gui { my ($mw) = @_; $mw->g_wm_title('Entry Example'); $mw->g_wm_minsize(300, 200); return; } sub build_framework { my ($mw) = @_; my $frame = $mw->new_ttk__frame(-padding => '10 10 10 10'); $frame->g_grid(-column => 0, -row => 0, -sticky => 'nsew'); $mw->g_grid_columnconfigure(0, -weight => 1); $mw->g_grid_rowconfigure(0, -weight => 1); return $frame; } sub populate_framework { my ($frame) = @_; my ($string, $number); my $textvars = [ \($string, $number) ]; my $string_label = $frame->new_ttk__label(-text => 'String:'); $string_label->g_grid(-row => 0, -column => 0, -sticky => 'w'); my $string_entry = $frame->new_ttk__entry(-textvariable => \$string); $string_entry->g_grid(-row => 0, -column => 1, -sticky => 'ew'); my $number_label = $frame->new_ttk__label(-text => 'Number:'); $number_label->g_grid(-row => 1, -column => 0, -sticky => 'w'); my $number_entry = $frame->new_ttk__entry(-textvariable => \$number); $number_entry->g_grid(-row => 1, -column => 1, -sticky => 'ew'); my $write_button = $frame->new_ttk__button(-text => 'Write', -command => [\&write_entries, $textvars] ); $write_button->g_grid(-row => 2, -column => 0, -sticky => 'ew'); my $clear_button = $frame->new_ttk__button(-text => 'Clear', -command => [\&clear_entries, $textvars] ); $clear_button->g_grid(-row => 2, -column => 1, -sticky => 'ew'); $_->g_grid_configure(-padx => 5, -pady => 5) for $frame->_kids; return; } sub write_entries { my ($entries) = @_; print join ',', map { $$_ } @$entries; return; } sub clear_entries { my ($entries) = @_; $$_ = '' for @$entries; return; }