Perl Tk (WIN) NoteBook

Perl Tk (WIN) NoteBook

am 22.05.2007 11:55:16 von Robert Berghaus

Hallo

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

Wie kann ich das eine in das andere umrechnen?

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

Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk (WIN) NoteBook

am 22.05.2007 21:10:57 von Slaven Rezic

Robert Berghaus 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 .
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 rezic de

Dump a Tk canvas as an xfig file:
http://search.cpan.org/search?mode=module&query=Tk::CanvasFi g

Re: Perl Tk (WIN) NoteBook

am 23.05.2007 17:00:53 von Robert Berghaus

Hallo Slaven

Slaven Rezic schrieb:
> Robert Berghaus writes:
>=20
>> 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.
>> Ü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 e=
s
>> dann die Anzahl Zeichen).
>>
>> Wie kann ich das eine in das andere umrechnen?
>=20
> 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.
>=20

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

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

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

Schönen Gruß aus dem Bergischen Land
Robert

Re: Perl Tk (WIN) NoteBook

am 23.05.2007 20:08:30 von KWittrock

"Robert Berghaus" schrieb im Newsbeitrag
news:c1.2bm.35MdXk$LSX@TPA31p-os2.robe-edv.lokal...
> Hallo Slaven
>
> Slaven Rezic schrieb:
>> Robert Berghaus 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

Re: Perl Tk (WIN) NoteBook

am 24.05.2007 19:49:12 von Robert Berghaus

Hallo Klaus

K. Wittrock schrieb:
>=20
> "Robert Berghaus" schrieb im Newsbeitrag=20
> news:c1.2bm.35MdXk$LSX@TPA31p-os2.robe-edv.lokal...
>> Hallo Slaven
>>
>> Slaven Rezic schrieb:
>>> Robert Berghaus 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.
>>>> Ü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(-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.
>=20
> Width und height liefern erst dann den richtigen Wert, nachdem das=20
> 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=20
> dir vielleicht afterIdle weiterhelfen. Dann gibt es noch reqwidth und=20
> reqheight, die vermutlich den Wert liefern, den width und height=20
> bekommen sollen (vor der Abstimmung mit den anderen Widgets). Das habe =

> ich aber noch nicht verwendet.
>=20

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

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

Dieser Ansatz ist viel besser.

Vielen Dank und schönen Gruß aus dem Bergischen Land
Robert