Schrift
[thread]4913[/thread]

Tk und Subs

Leser: 1


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Froschpopo
 2005-04-05 13:14
#43283 #43283
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
also nen configure kannste ja echt vergessen wenn sich z.b. nen Label() in einer sub befindet dessen Variablen local deklariert sind.
Oder gibts da ne Möglichkeit, wat weiss ich, vielleicht son switch oder sowas den man auch von außerhalb umlegen kann? Mit configure kann man ja auch nachträglich irgendwo eingreifen.
Einzigste Möglichkeit wäre ja noch, die Variablen alle als our zu deklarieren, aber dann kann ich mir die subs auch gleich sparen.
Thorium
 2005-04-05 14:02
#43284 #43284
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Naja am einfachsten ist wohl schon die Widgets der Objekte zu speichern. Das kannst du aber z.B. auch in einem Hash machen, dann hast du ned so viele Globale Variablen.

Was du aber auch machen kannst ist die Funktion $widget->children zu benutzen.
"Returns a list containing all the children of $widget".
Damit könntest du z.B. eine Liste aller Widgets vom TopLevel bekommen und vielleicht so wieder auf dein Label zu schliessen.
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
Ishka
 2005-04-05 14:05
#43285 #43285
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ist das als Antwort in einem Thread gedacht, oder soll das ne Frage sein?

Man kann in der widget-Hierarchie mittels $widget->children alle unterwidgets bestimmen und sich dann das auswählen, was man haben will. Alternative ist, daß du Variablen aus nem Hash verwendest, damit hast du dann zumindestens nur eine globale Variable.

sollte das deine Frage nicht beantworten, mußt du sie nochmal genauer stellen.

edit: mist - war zu langsam ;)\n\n

<!--EDIT|Ishka|1112695566-->
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Froschpopo
 2005-04-05 14:09
#43286 #43286
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
aber das hash müsste ja dann auch global sein ;)

mit den children, daran hab ich auch schon gedacht... das prob ist allerdings, dass ich für jedes toplevel ne eigene sub gemacht hab. das configure kann ich jedoch immer nur außerhalb der sub aufrufen.

ich habe ein fork der verändert verschiedene eigenschaften und wirft dann ergebnisse raus die dann außerhalb des forks mit configure bearbeitet werden sollen. D.h. ich kann die sub mit dem toplevel nicht nochmal aufrufen denn dann würde sich das fenster erneut öffnen.
Crian
 2005-04-05 18:35
#43287 #43287
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Das Hash muss zwar Global sein, hat aber Vorteile:

a) Du verschmutzt den globalen Namensraum nicht mit dutzenden Variablen
b) In den Funktionen weißt Du sofort, dass auf eine globale Variable (auf einen Wert im globalen Hash) zugegriffen wird, wenn Du so etwas wie $Conf{mainwindow} siehst. Das erhöht die Übersichtlichkeit deutlich.
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
Ishka
 2005-04-05 19:08
#43288 #43288
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
was ich auch recht gerne mach, ist daß ich dafür einen globalen HoH hab, damit ich für jeden subrotinenblock meinen eigenen Hash verwenden kann, bspl:
Code: (dl )
1
2
3
sub bsp_hallo { greift auf $hash{bsp}{...} zu}
sub bsp_jaja { greift auf $hash{bsp}{...} zu}
sub oder_so { greift auf $hash{oder}{...} zu}

nimmt zwar dem strict ein bischen den Sinn, aber das verwende ich ja nur für Tk-zwecke, wo das ungemein praktisch ist und deinen Namensraum sauber hält. Und gegen falsschreibung und ähnliches muß man halt vorher und nachher die Keys vergleichen.
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Crian
 2005-04-06 03:22
#43289 #43289
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Dafür gibts doch Hash::Util! Erst alle Keys vorweg anlegen (ich setz die dann auf undef) und dann abschließen. Schon ist die Kontorlle auch bei den Hashes gegeben.
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
Froschpopo
 2005-04-06 03:24
#43290 #43290
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
wozu brauch man nen modul, ich kann doch einfach our %config = (); machen.
Crian
 2005-04-06 03:31
#43291 #43291
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Mit dem Modul (was übrigens ein Core-Modul ist) kannst Du die Schlüssel eines Hashes "abschließen". Dadurch kannst Du Dir keine Tippfehlerprobleme bei den Schlüsselnamen einhandeln (bzw. werden diese dann entsprechend angemeckert). Das ist sehr sehr praktisch.
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
renee
 2005-04-06 11:32
#43292 #43292
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
siehe http://wiki.perl-community.de/bin....raenken

<offtopic> wir haben ja mittlerweile eine recht nette Größe an Wiki-Artikeln erreicht, trotzdem ist jeder herzlichst eingeladen, auch ein paar Artikel zu erstellen </offtopic>\n\n

<!--EDIT|renee|1112772867-->
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/
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2005-04-05 13:14.