Perl Tk (WIN) NoteBook

Hallo

Ich benutze zur Dateneingabe ein Notebook mit 4 Seiten und auf
jeder Seite "Tabellen" (mittels Frames zusammengesetzt und vom
pack Geometry Manager verwaltet). Die Größe des Notebooks wird von
der Seite mit der größten Tabelle bestimmt. Auf den Seiten mit
kleineren Tabellen sind die Tabellen jetzt entweder rechts- oder
linksbündig und beides sieht nicht besonders gut aus.
=DCber NoteBook->cget(-width) bekomme ich die Breite des Notebooks
heraus (angeblich). Der Wert von 10 ist aber nicht sonderlich
hilfreich, wenn ein Entry Widget schon 20 zurückliefert (hier sind
es dann die Anzahl Zeichen).

Wie kann ich das eine in das andere umrechnen?

Ich habe auch mal versucht dynamicgeometry zu setzen, aber ohne
irgendwelche Auswirkungen. Ist das nicht implementiert?

Schönen Gruß aus dem Bergischen Land
Robert
Robert Berghaus [ Di, 22 Mai 2007 11:55 ] [ ID #1718908 ]

Re: Perl Tk (WIN) NoteBook

Robert Berghaus <Robert.Berghaus [at] gmx.de> writes:

> Hallo
>
> Ich benutze zur Dateneingabe ein Notebook mit 4 Seiten und auf jeder
> Seite "Tabellen" (mittels Frames zusammengesetzt und vom pack Geometry
> Manager verwaltet). Die Größe des Notebooks wird von der Seite mit der
> größten Tabelle bestimmt. Auf den Seiten mit kleineren Tabellen sind
> die Tabellen jetzt entweder rechts- oder linksbündig und beides sieht
> nicht besonders gut aus.
> Über NoteBook->cget(-width) bekomme ich die Breite des Notebooks
> heraus (angeblich). Der Wert von 10 ist aber nicht sonderlich
> hilfreich, wenn ein Entry Widget schon 20 zurückliefert (hier sind es
> dann die Anzahl Zeichen).
>
> Wie kann ich das eine in das andere umrechnen?

Für die Dimensionen eines Widgets sind cget(-width) und cget(-height)
selten hilfreich. Hier stehen eigentlich nur die Werte, mit denen ein
Widget konfiguriert wurde bzw. ein Defaultwert. Mehr Glück könntest du
mit den Methoden width und height haben.

>
> Ich habe auch mal versucht dynamicgeometry zu setzen, aber ohne
> irgendwelche Auswirkungen. Ist das nicht implementiert?
>

Versuch mal die SVN-Version von Tk <https://svn.perl.org/modules/Tk>.
Im svn log findet man den folgenden Eintrag:

| r1769: eserte | 2007-03-24 22:16:14 +0100
| Changed paths:
| M /local/Tk-at-perl/trunk/Tixish/NoteBook.pm
|
| Fix for Tk::NoteBook: -dynamicgeometry did not work
| (Spotted by Ch Lamprecht)

Gruß,
Slaven

--
Slaven Rezic - slaven <at> rezic <dot> de

Dump a Tk canvas as an xfig file:
http://search.cpan.org/search?mode=module&query=Tk::CanvasFi g
Slaven Rezic [ Di, 22 Mai 2007 21:10 ] [ ID #1718924 ]

Re: Perl Tk (WIN) NoteBook

Hallo Slaven

Slaven Rezic schrieb:
> Robert Berghaus <Robert.Berghaus [at] gmx.de> writes:
>
>> Hallo
>>
>> Ich benutze zur Dateneingabe ein Notebook mit 4 Seiten und auf jeder
>> Seite "Tabellen" (mittels Frames zusammengesetzt und vom pack Geometry=

>> Manager verwaltet). Die Größe des Notebooks wird von der Seite mit=
der
>> größten Tabelle bestimmt. Auf den Seiten mit kleineren Tabellen si=
nd
>> die Tabellen jetzt entweder rechts- oder linksbündig und beides sieh=
t
>> nicht besonders gut aus.
>> =DCber NoteBook->cget(-width) bekomme ich die Breite des Notebooks
>> heraus (angeblich). Der Wert von 10 ist aber nicht sonderlich
>> hilfreich, wenn ein Entry Widget schon 20 zurückliefert (hier sind e=
s
>> dann die Anzahl Zeichen).
>>
>> Wie kann ich das eine in das andere umrechnen?
>
> Für die Dimensionen eines Widgets sind cget(-width) und cget(-height)=

> selten hilfreich. Hier stehen eigentlich nur die Werte, mit denen ein
> Widget konfiguriert wurde bzw. ein Defaultwert. Mehr Glück könntest=
du
> mit den Methoden width und height haben.
>

cget(-width) liefert 10 und width() liefert 1. Also kein Glück
gehabt. Ich werde zunächst mal mit fixen Werten arbeiten, dann
geht es wenigstens einigermaßen.

>> Ich habe auch mal versucht dynamicgeometry zu setzen, aber ohne
>> irgendwelche Auswirkungen. Ist das nicht implementiert?
>>
>
> Versuch mal die SVN-Version von Tk <https://svn.perl.org/modules/Tk>.
> Im svn log findet man den folgenden Eintrag:
>
> | r1769: eserte | 2007-03-24 22:16:14 +0100
> | Changed paths:
> | M /local/Tk-at-perl/trunk/Tixish/NoteBook.pm
> |
> | Fix for Tk::NoteBook: -dynamicgeometry did not work
> | (Spotted by Ch Lamprecht)
>
> Gruß,
> Slaven
>

Hole ich mir noch. Diese Funktionalität ist für mich aber nicht
entscheidend, da die Größe des NoteBooks nicht bei jeder Seite
wechseln soll.

Schönen Gruß aus dem Bergischen Land
Robert
Robert Berghaus [ Mi, 23 Mai 2007 17:00 ] [ ID #1721330 ]

Re: Perl Tk (WIN) NoteBook

"Robert Berghaus" <Robert.Berghaus [at] gmx.de> schrieb im Newsbeitrag
news:c1.2bm.35MdXk$LSX [at] TPA31p-os2.robe-edv.lokal...
> Hallo Slaven
>
> Slaven Rezic schrieb:
>> Robert Berghaus <Robert.Berghaus [at] gmx.de> writes:
>>
>>> Hallo
>>>
>>> Ich benutze zur Dateneingabe ein Notebook mit 4 Seiten und auf jeder
>>> Seite "Tabellen" (mittels Frames zusammengesetzt und vom pack Geometry
>>> Manager verwaltet). Die Größe des Notebooks wird von der Seite mit der
>>> größten Tabelle bestimmt. Auf den Seiten mit kleineren Tabellen sind
>>> die Tabellen jetzt entweder rechts- oder linksbündig und beides sieht
>>> nicht besonders gut aus.
>>> Über NoteBook->cget(-width) bekomme ich die Breite des Notebooks
>>> heraus (angeblich). Der Wert von 10 ist aber nicht sonderlich
>>> hilfreich, wenn ein Entry Widget schon 20 zurückliefert (hier sind es
>>> dann die Anzahl Zeichen).
>>>
>>> Wie kann ich das eine in das andere umrechnen?
>>
>> Für die Dimensionen eines Widgets sind cget(-width) und cget(-height)
>> selten hilfreich. Hier stehen eigentlich nur die Werte, mit denen ein
>> Widget konfiguriert wurde bzw. ein Defaultwert. Mehr Glück könntest du
>> mit den Methoden width und height haben.
>>
>
> cget(-width) liefert 10 und width() liefert 1. Also kein Glück gehabt.

Width und height liefern erst dann den richtigen Wert, nachdem das Widget
gezeichnet wurde. Also nicht schon bei der Erzeugung verwenden. Wenn du in
deinem Kode keinen passenden Platz für den Aufruf hast, kann dir vielleicht
afterIdle weiterhelfen. Dann gibt es noch reqwidth und reqheight, die
vermutlich den Wert liefern, den width und height bekommen sollen (vor der
Abstimmung mit den anderen Widgets). Das habe ich aber noch nicht verwendet.

In deinem Fall ist vielleicht ein anderer Ansatz einfacher: stecke deine
"Tabellen" in ein zusätzliches Frame, das du dann mit den -anchor-Werten 'n'
oder 'center' in der Mitte der Seite plazierst ('center' ist default).

Alles graue Theorie, ich habe keine Erfahrungen mit Notebooks. Viel Glück.

Gruß

Klaus
KWittrock [ Mi, 23 Mai 2007 20:08 ] [ ID #1721333 ]

Re: Perl Tk (WIN) NoteBook

Hallo Klaus

K. Wittrock schrieb:
>
> "Robert Berghaus" <Robert.Berghaus [at] gmx.de> schrieb im Newsbeitrag
> news:c1.2bm.35MdXk$LSX [at] TPA31p-os2.robe-edv.lokal...
>> Hallo Slaven
>>
>> Slaven Rezic schrieb:
>>> Robert Berghaus <Robert.Berghaus [at] gmx.de> writes:
>>>
>>>> Hallo
>>>>
>>>> Ich benutze zur Dateneingabe ein Notebook mit 4 Seiten und auf jeder=

>>>> Seite "Tabellen" (mittels Frames zusammengesetzt und vom pack Geomet=
ry
>>>> Manager verwaltet). Die Größe des Notebooks wird von der Seite m=
it der
>>>> größten Tabelle bestimmt. Auf den Seiten mit kleineren Tabellen =
sind
>>>> die Tabellen jetzt entweder rechts- oder linksbündig und beides si=
eht
>>>> nicht besonders gut aus.
>>>> =DCber NoteBook->cget(-width) bekomme ich die Breite des Notebooks
>>>> heraus (angeblich). Der Wert von 10 ist aber nicht sonderlich
>>>> hilfreich, wenn ein Entry Widget schon 20 zurückliefert (hier sind=
es
>>>> dann die Anzahl Zeichen).
>>>>
>>>> Wie kann ich das eine in das andere umrechnen?
>>>
>>> Für die Dimensionen eines Widgets sind cget(-width) und cget(-heigh=
t)
>>> selten hilfreich. Hier stehen eigentlich nur die Werte, mit denen ein=

>>> Widget konfiguriert wurde bzw. ein Defaultwert. Mehr Glück könnte=
st du
>>> mit den Methoden width und height haben.
>>>
>>
>> cget(-width) liefert 10 und width() liefert 1. Also kein Glück gehab=
t.
>
> Width und height liefern erst dann den richtigen Wert, nachdem das
> Widget gezeichnet wurde. Also nicht schon bei der Erzeugung verwenden. =

> Wenn du in deinem Kode keinen passenden Platz für den Aufruf hast, ka=
nn
> dir vielleicht afterIdle weiterhelfen. Dann gibt es noch reqwidth und
> reqheight, die vermutlich den Wert liefern, den width und height
> bekommen sollen (vor der Abstimmung mit den anderen Widgets). Das habe =

> ich aber noch nicht verwendet.
>

cget(-width) liefert immer was falsches, width() erst nach Aufbau
die richtigen Werte und reqwidth() ist das, was ich suchte.

> In deinem Fall ist vielleicht ein anderer Ansatz einfacher: stecke dein=
e
> "Tabellen" in ein zusätzliches Frame, das du dann mit den -anchor-Wer=
ten
> 'n' oder 'center' in der Mitte der Seite plazierst ('center' ist defaul=
t).
>
> Alles graue Theorie, ich habe keine Erfahrungen mit Notebooks. Viel Glü=
ck.
>

Dieser Ansatz ist viel besser.

Vielen Dank und schönen Gruß aus dem Bergischen Land
Robert
Robert Berghaus [ Do, 24 Mai 2007 19:49 ] [ ID #1722660 ]
Perl » de.comp.lang.perl.misc » Perl Tk (WIN) NoteBook

Vorheriges Thema: exit und ERRORLEVEL
Nächstes Thema: BEGIN/CHECK Block oder nicht?