[Cologne-pm] Tk::pack statt pack()

Falky perl at falky.de
Mon Jun 20 06:49:59 PDT 2005


Hallo an alle,

da die Liste (ich lese seit einigen Monaten mit) in
letzter Zeit kaum noch Traffik hat, falle ich mal
mit der Tür ins Haus.

Ich bin nicht gerade ein Freund von OOP, aber wie ich
das sehe komme ich bei Tk nicht darum herum.
Um einigermaßen ein Gefühl für die Sache zu bekommen,
hab ich mir mal ein paar standard-Beispiele geschnappt,
und verschiedene Schreibweisen ausprobiert.

Dabei klappt allerdings die Notation ohne den
Pfeil -> nicht immer
Beispiel:

  $opt{-text} = 'INC';
  $opt{-command}=[\&showINC];
  $opt{-width}='40';

  $button = Button $App %opt; #klappt

  $button->pack(side=>'top'); #klappt, gefällt mir aber nicht
  pack $button (side=>'top'); #klappt nicht
  Tk::pack $button (side=>'top'); #klappt wieder, ist aber auch nicht schön



Perl vermutet, dass mit pack die Standard-funktion gemeint ist
und beschwehrt sich über die Argumentenanzahl von pack

Kann ich dem Interpreter irgendwie sagen, 'Vergiss (vorrübergehend) die
Standardfunktion pack()'?
Ich habs mal versucht mit
  *pack = *Tk::pack;
aber das bringt nichts. Ich bin eigentlich auch eher überrascht, dass
Tk::pack $button funktioniert als das das mit dem Typeglob nicht
funktioniert.

Irgendwas in Richtung
  \&pack = \&Tk::pack;
  sub pack {\irgendwas... }
oder so bringt mich auch nicht weiter.
Mir ist auch deshalb nicht so ganz klar, was ich suche, weil ich
die interne logik nicht ganz kapiere. Da pack 'nur' eine Methode ist,
wird sie mit use nicht importiert (wimni). Daher müsste ich sie
vieleicht besser über irgent ein Default-Widget ansprechen, vieleicht
  *pack = *Tk::Default->pack ???

Kann mir irgend wer auf die Spünge helfen?

ein anderes Problem?

  $opt{-text} = 'pong';
  $opt{-command} = [$App=>'destroy'];
  $button = Button $App %opt;
bzw
  $App->Button(-text => 'OK',-command => [$App=>'destroy'])->pack

Ich hatte verstanden, -command würde eine code-Referenz (ein Callback)
bekommen. Das währe dann aber doch [\$App->destroy], wohingegen die
  => Notation nix anderes ist als eine Liste.
(ich vermute zwar, das dass noch irgenwo in den Tiefen von perldoc
Tk... steht, naja mal abwarten)

Also mir gehts primär darum, die innere Logik zu verstehen und
erst in zweiter Linie um 'die' (eine) Lösung (TIMTOWTDI).

Hat jemand Lust?

Falky



Ach so ja, ich heiße bürgerlich Katrin Falkenberg,
benutze Perl (bisher) vor allem für kleinere Scripts auf
unserem Server und bin 37. Noch Fragen?



More information about the Cologne-pm mailing list