Seite 1 von 1
Vertikale Labels mit vertikalem Text
Verfasst: Montag 12. April 2004, 10:42
von Gast
Ist es möglich ein Label samt Text um 90° zu drehen, damit es vertikal steht? Dabei sollte der Text natürlich mitgedreht werden, so dass dieser auch vertikal steht.
Ist das mit Tkinter möglich?
Verfasst: Montag 12. April 2004, 13:13
von jocsch
Hallo!
Dazu fällt mir jetzt bloss ein, den Text mit irgendeiner Bildbearbeitungssoftware um 90°zu drehen und ihn dann als image bzw. bitmap auf das Label zu pappen (Label(image = ... bzw. bitmap = ...)). Wär doch für den Anfang schon mal ne Notlösung oder ?
Gruss, jocsch
Verfasst: Montag 12. April 2004, 13:36
von Dookie
Hallo,
das mit dem Drehen sollte auch mit PIL gehen.
Gruß
Dookie
Verfasst: Montag 12. April 2004, 17:03
von Gast
Das habe ich mir auch schon überlegt, allerdings wollte ich nach einer einfacheren Lösung fragen, da ich sehr viele Texte vertikal schreiben sollte und das alles zu bearbeiten ist sehr aufwendig.
Dann werde das einmal versuchen.
Verfasst: Dienstag 13. April 2004, 00:02
von DER Olf
kann man auf einem Tkinter label nicht mit
arbeiten?
unter Delphi hätte ich das so gemacht:
das sollte doch eigentlich funktionieren.
kann man sowas nicht auf Tkinter übertragen?
oder auch in andere Toolkits (GTK, Qt, ...)
Verfasst: Dienstag 13. April 2004, 00:37
von Dookie
Hi DER Olf,
sollte gehen, dann sind die Zeichen halt nicht gedreht.
Code: Alles auswählen
labeltext = "Hallo Welt"
vertical = "\n".join(list(labeltext))
man kann das ganze auch in ein lambda packen.
Code: Alles auswählen
vertical = lambda x: "\n".join(list(x))
print vertical(labeltext)
Gruß
Dookie
Verfasst: Dienstag 13. April 2004, 01:05
von DER Olf
aha...
der delphi ansatz ist deutlich einfacherer zu lesen
ps: was ist ein lambda??

Verfasst: Dienstag 13. April 2004, 13:00
von Dookie
man könnte es auch so schreiben in Python:
Code: Alles auswählen
Label1.Caption = 'L'+'\n'+'a'+'\n'+'b'+'\n'+'e'+'\n'+'l'
mach das mal bei längeren Texten oder 20 Labels. Da lass ich das lieber Python machen.
lambda ist eine anonyme Funktion. Wird hauptsächlich bei "functional Programming" eingesetzt, zur Listenverarbeitung zusammen mit map, reduce und filter. Kann aber auch z.B. bei GUI-Programmierung zum wrappen von Funktionen eingesetzt werden. Oder wie im konkreten Fall, als Ersatz für eine Funktion.
ist equivalent zu
Gruß
Dookie
Verfasst: Dienstag 13. April 2004, 17:02
von wuf
Hallo Python-Tinker-Freunde
Wenn die einzelnen Zeichen des Labeltextes
nicht unbedingt legen müssen sondern vertikal
stehen dürfen geht es natürlich auch so:
Code: Alles auswählen
import sys
from Tkinter import *
def ende():
sys.exit(0)
hauptfenster = Tk()
labeltext = "Vertikal"
height = len(labeltext)
# Label
lb = Label(hauptfenster,fg='blue',
relief = 'raised',
bg = 'khaki',
border = '2',
text = labeltext,
width = 2,
height = height,
wraplength = 1)
lb.pack(pady = 5)
bende = Button(hauptfenster, text = "Ende",command = ende)
bende.pack(pady = 5)
hauptfenster.mainloop()
Slogan: Tkinter is not Delphi or MS-VB, it's TCL
Gruss wuf

Verfasst: Dienstag 13. April 2004, 19:12
von hans
wuf hat geschrieben:Slogan: Tkinter is not Delphi or MS-VB, it's TCL
Hast recht!
Aber wo wir schon einmal bei Delphi sind: Ich habe einmal etwas unter Delphi programmiert. Das ging mit Windows API Funktion CreateFont
Code: Alles auswählen
HFONT CreateFont(
int nHeight, // height of font
int nWidth, // average character width
int nEscapement, // angle of escapement
int nOrientation, // base-line orientation angle
int fnWeight, // font weight
DWORD fdwItalic, // italic attribute option
DWORD fdwUnderline, // underline attribute option
DWORD fdwStrikeOut, // strikeout attribute option
DWORD fdwCharSet, // character set identifier
DWORD fdwOutputPrecision, // output precision
DWORD fdwClipPrecision, // clipping precision
DWORD fdwQuality, // output quality
DWORD fdwPitchAndFamily, // pitch and family
LPCTSTR lpszFace // typeface name
);
Genaue Beschreibung siehe
Dokumentation hier ich glaube, die Drehung wurde mit nOrientation eingestellt. Ausgabe erfolgte dann einfachg dadurch, dass auf den Canvas geschrieben wurde.
Ich weiß, daß das hier nicht die gesuchte Lösung ist, aber vielleicht könnt ihr davon was ableiten.
Hans