Thread Schleifen warten lassen (22 answers)
Opened by Hubbi at 2010-05-11 10:47

Gast Hubbi
 2010-05-11 14:34
#137032 #137032
Nein das Skript läuft nicht auf einen Webserver und ähnliches:-)

Da es nun Probleme mit der Grafischen Oberfläche ist, habe ich nun das Dialogfenster ganz am Anfang des Scrips stehen (package waage).
Nun zeigt er die Dialogbox vor mein Hauptframe (MyFrame), wo auch zuerst diese Schleife abgearbeitet wird.

Nur ist jetzt das Problem, dass er das Skript nicht weiterläd wenn das Dialogfenster da ist (geht erst weiter wenn ich das schließe).

Gibt es eine Möglichkeit MyFrame in Hintergrund weiter laden zu lassen?

Hier mein Ausschnitt:

Code: (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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
use Wx 0.15 qw[:allclasses];
use strict;
package waage;

use Wx qw[:everything];
use base qw(Wx::Frame);
use strict;

sub new {
my( $self, $parent, $id, $title, $pos, $size, $style, $name ) = @_;
$parent = undef unless defined $parent;
$id = -1 unless defined $id;
$title = "" unless defined $title;
$pos = wxDefaultPosition unless defined $pos;
$size = wxDefaultSize unless defined $size;
$name = "" unless defined $name;

# begin wxGlade: waage::new

$style = wxDEFAULT_FRAME_STYLE
unless defined $style;

$self = $self->SUPER::new( $parent, $id, $title, $pos, $size, $style, $name );
$self->{label_text} = Wx::StaticText->new($self, -1, "Bitte Warten .", wxDefaultPosition, wxDefaultSize, );

my $timer = Wx::Timer->new($self, -1);

$timer->Start(500);

Wx::Event::EVT_TIMER($self, -1 , \&wait);

$self->__set_properties();
$self->__do_layout();

# end wxGlade
return $self;

}


sub __set_properties {
my $self = shift;

# begin wxGlade: waage::__set_properties

$self->SetSize(Wx::Size->new(220, 100));
$self->{label_text}->SetMinSize(Wx::Size->new(150, 19));
$self->{label_text}->SetFont(Wx::Font->new(12, wxDEFAULT, wxNORMAL, wxBOLD, 0, ""));

# end wxGlade
}

sub __do_layout {
my $self = shift;

# begin wxGlade: waage::__do_layout

$self->{sizer_1} = Wx::BoxSizer->new(wxVERTICAL);
$self->{sizer_1}->Add($self->{label_text}, 0, wxTOP|wxALIGN_CENTER_HORIZONTAL, 35);
$self->SetSizer($self->{sizer_1});
$self->Layout();

# end wxGlade
}

sub wait {
my ($self, $event) = @_;
# wxGlade: Ueberwachung::gewicht <event_handler>

my $text = $self->{label_text}->GetLabel;

if($text eq "Bitte Warten .")
{
$self->{label_text}->SetLabel("Bitte Warten ..");
}
if($text eq "Bitte Warten ..")
{
$self->{label_text}->SetLabel("Bitte Warten ...");
}
if($text eq "Bitte Warten ...")
{
$self->{label_text}->SetLabel("Bitte Warten .");
}


# end wxGlade
}
# end of class waage

1;

1;

package main;

unless(caller){
local *Wx::App::OnInit = sub{1};
my $app = Wx::App->new();
Wx::InitAllImageHandlers();

my $waage = waage->new();

$app->SetTopWindow($waage);
$waage->Show(1);
$app->MainLoop(); # liegt hier der Fehler?
}

1;

package MyFrame;

use Wx qw[:everything];
use base qw(Wx::Frame);
use module::rs232;
use JSON;
use module::json_write;
use module::json_read;
use module::kasse;
use module::abbruch;
use strict;




sub new {
our( $self, $parent, $id, $title, $pos, $size, $style, $name ) = @_;
$parent = undef unless defined $parent;
$id = -1 unless defined $id;
$title = "" unless defined $title;
$pos = wxDefaultPosition unless defined $pos;
$size = wxDefaultSize unless defined $size;
$name = "" unless defined $name;

# begin wxGlade: MyFrame::new

$style = wxMAXIMIZE_BOX
unless defined $style;


our @material = ws($ARGV[1]); # Material und Preis auslesen (json_read)
our @gewicht = wiegen(2);
our $preis = kosten($gewicht[0], $material[0], $material[1]); # ausrechnen der Gesamtkosten
our $preis_gesamt;

...

Last edited: 2010-05-11 14:36:22 +0200 (CEST)

View full thread Schleifen warten lassen