Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]4923[/thread]

Zugriff auch nach MainLoop ?



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
Froschpopo
 2005-04-08 00:28
#43383 #43383
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich mach mir da keine großen Hoffnungen,
aber wenn ich hinter MainLoop eine Endlosschleife mache, dann friert mir Tk nichtmehr ein.

Es ist vielleicht dreist zu fragen, aber kann ich nach MainLoop noch irgendwie auf Tk zugreifen, z.b. um ein configure zu machen?

Wem's stinkt dass ich frage, der muss ja nicht antworten ;)
coax
 2005-04-08 01:20
#43384 #43384
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
[quote=Froschpopo,07.04.2005, 22:28]aber wenn ich hinter MainLoop eine Endlosschleife mache, dann friert mir Tk nichtmehr ein.[/quote]
Das verstehe wer will.
Quote
Es ist vielleicht dreist zu fragen, aber kann ich nach MainLoop noch irgendwie auf Tk zugreifen, z.b. um ein configure zu machen?

MainLoop startet wie der Name der Methode schon sagt eine Schleife (die endlos ist, bis Tk endet). In der Schleife wird geprueft ob neue Events aufgetreten sind und auf die wird dann entsprechend reagiert.
D.h. in Prinzip kannst du nur noch ueber Tk-Widgets und -Methoden, die diese Events erzeugen, ins Tk-Geschehen eingreifen.
,,Das perlt aber heute wieder...'' -- Dittsche
Froschpopo
 2005-04-08 01:23
#43385 #43385
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
D.h. in Prinzip kannst du nur noch ueber Tk-Widgets und -Methoden, die diese Events erzeugen, ins Tk-Geschehen eingreifen. 

eben nicht:

while(<SOCKET>) {
    $mw->configure(...);
}

da die <SOCKET> aber immer wahr ist solang die Verbindung besteht, friert mir in der Zeit wo ich auf Antwort vom SOCKET warte die Tk ein.\n\n

<!--EDIT|Froschpopo|1112909073-->
coax
 2005-04-08 01:33
#43386 #43386
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Ja, und nun setzt doch mal vor das while ein MainLoop(); und du wirst sehen deine while-Schleife wird so lange nicht abgearbeitet bis Tk beendet wird.
,,Das perlt aber heute wieder...'' -- Dittsche
Froschpopo
 2005-04-08 01:37
#43387 #43387
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
genau. deshalb wollt ich das configure von nem thread aus machen und das $mw global handeln.
Dubu
 2005-04-08 12:48
#43388 #43388
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Code: (dl )
1
2
3
4
5
while(<SOCKET>) {
$mw->configure(...);
...
$mw->update();
}
Froschpopo
 2005-04-08 20:07
#43389 #43389
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=Dubu,08.04.2005, 10:48]
Code: (dl )
1
2
3
4
5
while(<SOCKET>) {
    $mw->configure(...);
    ...
    $mw->update();
}
[/quote]
genau das ist mein problem ! Die <SOCKET> ist ewig wahr und deshalb friert Tk ein weil MainLoop ja auch ne Schleife ist und Perl nicht zwei schleifen gleichzeitig ausführen kann!
Mein Plan ist eigentlich, SOCKET in ein Childprozess zu verlagern und vom Childprozess aus dann Funktionen im Elternprozess anzusprechen.

Ich weiss mittlerweile zwar wie ich das Kind erzeuge, jedoch weiss ich nicht wie ich ein Kind im Elternprozess ansprechen kann.

wenn ich:

sub child {
   call_parant(); # Prozess bei den eltern
}

mache, dann wird call_parent auch als Child ausgeführt. WARUM?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use Tk;
use threads;
use threads::shared;

my $t = threads->new(\&kind, $wm);

sub kind {
    eltern("hallo");
    return;
}
sub eltern {
    print "Das Kind sagt: $_[0]";
}

sleep(4); #warten bis kind fertig ist
\n\n

<!--EDIT|Froschpopo|1112976854-->
Dubu
 2005-04-08 20:37
#43390 #43390
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
*sigh*

Hast du das $mw->update() überhaupt gesehen?
Froschpopo
 2005-04-08 20:40
#43391 #43391
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
[quote=Dubu,08.04.2005, 10:48]
Code: (dl )
1
2
3
4
5
while(<SOCKET>) {
    $mw->configure(...);
    ...
    $mw->update();
}
[/quote]
wenn ich das im Kind ausführe dann klappts !
Hatte gedacht ich sollte es im Elternprozess machen...
das ging aber auch erst nachdem ich mir nen neues Tk geladen hab
Crian
 2005-04-12 18:31
#43392 #43392
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Weißt Du überhaupt, was Du da machst? Manchmal hört es sich so an als ob nicht...
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2005-04-08 00:28.