Perl Tk, nur ein Fenster

Perl Tk, nur ein Fenster

am 02.07.2007 14:03:05 von Robert Berghaus

Hallo

Zur Zeit arbeite ich mit einem Fenster und erzeuge zum=20
Bearbeiten/Importieren jeweils ein neues, wobei dieses dann den=20
Fokus bekommt. Mit grab wird das Hauptfenster deaktiviert.
Wenn ich jetzt alles in einem Fenster machen will, so habe ich=20
vor, die Frames des jeweils aktiven Fensters zu zerstören und die=20
für das neue Fenster aufzubauen.
Ist das der richtige Ansatz? Gibt es da irgendwelche Stolperfallen=20
(ich möchte nicht unbedingt jede durch eigene Erfahrung=20
kennenlernen ;-) ).

--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk, nur ein Fenster

am 02.07.2007 17:01:37 von Ch Lamprecht

Robert Berghaus schrieb:
> Hallo
>
> Zur Zeit arbeite ich mit einem Fenster und erzeuge zum
> Bearbeiten/Importieren jeweils ein neues, wobei dieses dann den Fokus
> bekommt. Mit grab wird das Hauptfenster deaktiviert.
> Wenn ich jetzt alles in einem Fenster machen will, so habe ich vor, die
> Frames des jeweils aktiven Fensters zu zerstören und die für das neue
> Fenster aufzubauen.
> Ist das der richtige Ansatz? Gibt es da irgendwelche Stolperfallen (ich
> möchte nicht unbedingt jede durch eigene Erfahrung kennenlernen ;-) ).
>
Hallo,

es ist besser, die unterschiedlichen Ansichten nur einmal zu erzeugen (Jeweils
in einem eigenen Frame) und diesen dann mit 'pack' und 'packForget', oder den
entsprechenden Methoden deines bevorzugten Geometry Managers, ein- bzw.
auszublenden.
Mit 'destroy' und neu erzeugten Widgets verlierst du Speicher, mit
'pack'/'packForget' nicht.

Grüße, Christoph

--
use Tk;use Tk::GraphItems;$c=tkinit->Canvas->pack;push@i,Tk::GraphItems ->
TextBox(text=>$_,canvas=>$c,x=>$x+=70,y=>100)for(Just=>anoth er=>Perl=>Hacker);
Tk::GraphItems->Connector(source=>$i[$_],target=>$i[$_+1])fo r(0..2);
$c->repeat(30,sub{$_->move(0,4*cos($d+=3.16))for(@i)});MainL oop

Re: Perl Tk, nur ein Fenster

am 02.07.2007 19:59:46 von Robert Berghaus

Hallo Christoph

Ch Lamprecht schrieb:
> Robert Berghaus schrieb:
>> Hallo
>>
>> Zur Zeit arbeite ich mit einem Fenster und erzeuge zum=20
>> Bearbeiten/Importieren jeweils ein neues, wobei dieses dann den Fokus =

>> bekommt. Mit grab wird das Hauptfenster deaktiviert.
>> Wenn ich jetzt alles in einem Fenster machen will, so habe ich vor,=20
>> die Frames des jeweils aktiven Fensters zu zerstören und die für d=
as=20
>> neue Fenster aufzubauen.
>> Ist das der richtige Ansatz? Gibt es da irgendwelche Stolperfallen=20
>> (ich möchte nicht unbedingt jede durch eigene Erfahrung kennenlernen=
=20
>> ;-) ).
>>
> Hallo,
>=20
> es ist besser, die unterschiedlichen Ansichten nur einmal zu erzeugen=20
> (Jeweils in einem eigenen Frame) und diesen dann mit 'pack' und=20
> 'packForget', oder den entsprechenden Methoden deines bevorzugten=20
> Geometry Managers, ein- bzw. auszublenden.
> Mit 'destroy' und neu erzeugten Widgets verlierst du Speicher, mit=20
> 'pack'/'packForget' nicht.

Das mit packForget hatte ich wohl nicht richtig gelesen (oder auch=20
nicht verstanden). Ich werde morgen damit mal ein wenig rumspielen.

Vielen Dank

--=20
Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk, nur ein Fenster

am 03.07.2007 18:00:40 von Robert Berghaus

Hallo Christoph

Ch Lamprecht schrieb:
> Robert Berghaus schrieb:
>> Hallo
>>
>> Zur Zeit arbeite ich mit einem Fenster und erzeuge zum=20
>> Bearbeiten/Importieren jeweils ein neues, wobei dieses dann den Fokus =

>> bekommt. Mit grab wird das Hauptfenster deaktiviert.
>> Wenn ich jetzt alles in einem Fenster machen will, so habe ich vor,=20
>> die Frames des jeweils aktiven Fensters zu zerstören und die für d=
as=20
>> neue Fenster aufzubauen.
>> Ist das der richtige Ansatz? Gibt es da irgendwelche Stolperfallen=20
>> (ich möchte nicht unbedingt jede durch eigene Erfahrung kennenlernen=
=20
>> ;-) ).
>>
> Hallo,
>=20
> es ist besser, die unterschiedlichen Ansichten nur einmal zu erzeugen=20
> (Jeweils in einem eigenen Frame) und diesen dann mit 'pack' und=20
> 'packForget', oder den entsprechenden Methoden deines bevorzugten=20
> Geometry Managers, ein- bzw. auszublenden.
> Mit 'destroy' und neu erzeugten Widgets verlierst du Speicher, mit=20
> 'pack'/'packForget' nicht.

'pack'/'packForget' funktioniert einwandfrei in einer kleinen=20
Testanwendung. Danke.
Für die große Anwendung muß ich jetzt nur noch entscheiden,=20
welches Fenster ich hier mit rein packe, bzw. welches besser in=20
einem neuen Fenster angezeigt wird.

--=20
Schönen Gruß aus dem Bergischen Land
Robert