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

Widgets manipulieren nach "MainLoop;" ?: mit oder ohne callbacks?



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
BratHering
 2005-09-19 15:59
#44573 #44573
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
hallo,

wie kann man den inhalt von widgets nach dem ausführen von "MainLoop;" ändern? - geht das überhaupt?

Code: (dl )
1
2
3
4
5
6
7
8
use Tk;

$mw = MainWindow->new();
$l = $mw->Label(-text => 'Hallo Perl Welt!')->pack();

MainLoop;

$l->configure(-text => 'Hallo Tk Welt!');


wenn man dieses stück code ausführt dann steht in dem fenster "Hallo Perl Welt!" aber ich hätte gerne eine möglichkeit gewusst wie der inhalt dessen in "Hallo Tk Welt!" umgeändert werden kann, das aber nach dem "MainLoop;" ausgeführt wurde.

bisher kenne ich nur die möglichkeit so etwas über callbacks eines widgets zu realisieren...


mit oder ohne callbacks?


mfg
BratHering\n\n

<!--EDIT|BratHering|1127131282-->
renee
 2005-09-19 16:06
#44574 #44574
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Irgendwie muss das Programm ja wissen, wann es ein Widget ändern soll. Das kannst Du über Widget-Events machen oder über File-Events oder über eine Schleife á la Tk::after etc. machen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
BratHering
 2005-09-19 16:21
#44575 #44575
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
und kann man dem nciht irgendwie mitteilen wenn es etwas ändern soll (ausserhalb von MainLoop;)?


also weil es ist so:
- ich habe ein Tool für ein spiel gemacht, siehe ScreenShot: http://www-1.informatik.fh-wiesbaden.de/~mkwas0....ple.jpg
und im moment arbeite ich an einem besseren nachfolger.

bisher habe ich im Perl-Script die GUI gebaut, die widgets mit inhalt gefüllt und dann mit "MainLoop;" abgeschlossen.

aber ich habe daran gedacht ob es nicht einfacher wäre für mich zuerst die GUI zu bauen und dann erst nach dem "MainLoop;" den inhalt reinbringen...?\n\n

<!--EDIT|renee|1127132609-->
BratHering
 2005-09-19 16:25
#44576 #44576
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
also quasi den teil...
Code: (dl )
$l->configure(-text => 'Hallo Tk Welt!');
...in einen callback nach MainLoop; verpacken?
renee
 2005-09-19 16:25
#44577 #44577
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du kannst z.B. an die Auswahl eines Punktes aus dem Dropdown-Menü oder an die Buttons ein Ereignis binden (Auswahl, Klick, etc...) und dann in der Subroutine das Widget ändern... Ich versteh jetzt nicht so ganz, wo Du da ein Problem siehst....
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-09-19 16:28
#44578 #44578
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ja...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use warnings;
use Tk;

my $mw = tkinit;
my $label = $mw->Label(-text => 'HAllo')->pack();
$label->bind('<Button-1>',[\&subr,$label]);

MainLoop;

sub subr{
my ($self) = @_;
$self->configure(-text => 'Hallo Welt');
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-09-19 18:10
#44579 #44579
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Nach der Mainloop ist das Programm (i.d.R.) zuende.
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
BratHering
 2005-09-19 19:04
#44580 #44580
User since
2005-04-28
155 Artikel
BenutzerIn
[default_avatar]
also woran ich eigentlich gedacht habe ist die manipulierung eines widgets ohne "benutzer interaktion" (also ohne tastatur, maus oder oder dropdown).

sondern die manipulation eines widgets im programm ablauf nach MainLoop; - naja ich habe mir aber schon gedacht, dass diese frage doof ist :-D
renee
 2005-09-19 19:46
#44581 #44581
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ohne Benutzerinteraktion kannst Du es nur Zeitgesteuert machen (Tk::after)...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
J-jayz-Z
 2005-09-20 10:42
#44582 #44582
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
gibt es eigentlich einen Unterschied zu
Code: (dl )
my $main = tkinit;
und
Code: (dl )
my $main = MainWindow->new();
? Ich kannte tkinit gar nicht...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2005-09-19 15:59.