Thread Tk - Frame löschen und neu aufbauen (1 answers)
Opened by user123 at 2012-08-10 16:18

user123
 2012-08-10 16:18
#160807 #160807
User since
2010-10-12
21 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich baue mir grade einen kleinen Editor und komm einfach nicht so richtig weiter. Ich baue mir über eine Auswahlbox ein Frame zusammen. Wenn ich aber eine andere Möglichkeit in der Auswahlbox wähle, schreibt es mir das neue Frame über das alte. Wie kann man das alte Frame zerstören, bevor sich das neue aufbaut? Weiterhin würde mich mal interessieren wie ich bei Klick auf einen der Edit-Buttons irgendwie die ID des Buttons mitgeben kann bzw. den Value des dazugehörigen Eingabefeldes auslesen kann? Wenn ich nämlich beim Aufruf der Funktion Test z.B. $attr oder $count mitgebe, habe ich dann bei jedem Button den gleichen Wert.
Wäre sehr dankbar für etwas Hilfe bzw. Tips von euch.
test.ini:
Code: (dl )
1
2
3
4
5
6
7
8
[section1]
testvar1 = 1
testvar2 = 2

[section2]
testvar1 = 1
testvar2 = 2
testvar3 = 3

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
use strict;
use warnings;
use Config::Tiny;
use Tk::BrowseEntry;
use Tk;

my $Config = Config::Tiny->new();
$Config = Config::Tiny->read( 'test.ini' );
my @section;
foreach my $key (sort keys %{$Config}){
  push(@section, $key);
}

my $mw = new MainWindow;
my $frm_ini = $mw -> Frame();
my $lbl_title = $mw->Label ( -text=>"ini-editor", -font => [-size => 12, -weight => "bold"]);
my $btn_browse= $mw->Button( -text=>"Anzeigen",-command=>\&create_editor);                     
my $browse_select = "";                                               
my $browse_value = $mw->BrowseEntry(-variable => \$browse_select, -command=>sub {});
for(my $i=0; $i<=$#section; $i++){
  $browse_value->insert("end", $section[$i]);
}

$lbl_title->grid ( -row=>0,-column=>0, -columnspan=>3);
$browse_value->grid(-row=>1,-column=>0, -sticky => "w");              
$btn_browse->grid( -row=>1,-column=>1, -columnspan=>2, -sticky=>"e");        

MainLoop();      


sub create_editor {
  my $frm_editor = $mw -> Frame();
  if ($browse_select eq ""){
    return 0;  
  }

  my @labels = ();
  my @inputs = ();
  my @buttons = ();
  my @new_value;
  my $count = 0;
  foreach my $attr(sort keys %{$Config->{$browse_select}}){  
    $labels[$count] = $frm_editor->Label ( -text=>$attr);
    $new_value[$count] = $Config->{$browse_select}{$attr}; 
    $inputs[$count] = $frm_editor->Entry (-textvariable => \$new_value[$count]);
    $buttons[$count] = $frm_editor->Button( -text=>"Edit", -command=>\&Test);         
    $count++;    
  }
  
  my $label;
  my $input;
  my $button;  
  my $row = 3;
  $frm_editor -> grid(-row=>2,-column=>0, -columnspan=>2, -sticky => "w");
  for (my $count = 0; $count < scalar(@labels); $count++){
    $label = $labels[$count];
    $input = $inputs[$count];
    $button = $buttons[$count];
    $label->grid(-row => 2 + $count, -column=> 0, -sticky => "w");
    $input->grid(-row => 2 + $count, -column=> 1, -sticky => "w");
    $button->grid(-row => 2 + $count, -column=> 2, -sticky => "w");  
  }    
}

sub Test{

}

Last edited: 2012-08-10 17:04:04 +0200 (CEST)

View full thread Tk - Frame löschen und neu aufbauen