Thread Probleme bei File - Handler - Änderung einer Zeile (13 answers)
Opened by YAPD at 2016-02-21 23:19

hlubenow
 2016-02-22 02:35
#183964 #183964
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
2016-02-21T23:57:10 YAPD
kannst du bitte genauer erläutern, was du meinst. Ich möchte ja bei jedem Click auf den Button in
meiner Oberfläche die aktuellen Werte des Text feldes auslesen, deswegen habe ich das Hash %Testumgebung in meiner Script innerhalb der command => sub{ } Funktion des Buttons angelegt, sonst sind die Werte nicht aktuell. Deswegen benutze ich auch die get( ) Funktion in meinem Hash. Oder ist das falsch und es gibt eine bessere Alternative?

Also, im Prinzip stimmt das schon. Ich würde aber eine etwas längere Funktion schreiben, die dann jedesmal über "-command => " aufgerufen wird, wenn Du den Knopf anklickst. Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/perl

use warnings;
use strict;

use Tk;

my $mw = Tk::MainWindow->new();
$mw->geometry("+200+200");
my $e1 = $mw->Entry(-bg => "white", -fg => "black");
$e1->pack(-padx => 10, -pady => 10);
$e1->focus();
my $e2 = $mw->Entry(-bg => "white", -fg => "black");
$e2->pack(-padx => 10, -pady => 10);
my $btn = $mw->Button(-text => "getit", -command => sub{getValues($e1, $e2);});
$btn->pack(-side => "right", -padx => 10, -pady => 10);
Tk::MainLoop();

sub getValues {
    my $e1 = shift;
    my $e2 = shift;
    my %testumgebung;
    $testumgebung{MAILING_SERVER_ADRESSE} = $e1->get();
    $testumgebung{MAILING_SERVER_PORT} = $e2->get();
    foreach my $i (keys(%testumgebung)) {
        print "$i\t$testumgebung{$i}\n";
    }
}

Wenn man das dann noch mit einer Klasse machen würde, bräuchte man sogar nicht mehr die Widgets ($e1, $e2) als Argumente zu übergeben, weil die dann klassenweit bekannt sind. Das wäre im Prinzip sogar einfacher, obwohl es zunächst einmal (gerade für Perl-Programmierer) schwerer zu verstehen zu sein scheint.

View full thread Probleme bei File - Handler - Änderung einer Zeile