Seite 1 von 1
Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Samstag 18. November 2023, 15:16
von Raptor64
Hallo allerseits!
Ich habe versucht mittels dem Parameter '
underline=2' (indexbasiert) nur den dritten Buchstabe des Wortes 'Python', also das 't', im Label zu unterstreichen. Leider funktioniert dies nicht bzw. der einzelne Buchstabe wird nicht unterstrichen. Ich habe Python 3.12 installiert und bin mir nicht sicher, ob dies nun einen Einfluss hat oder mein Code nicht stimmt. Nachstehend noch mein Versuchscode:
Code: Alles auswählen
from tkinter import *
myroot = Tk()
# Mit 'underline=2' sollte nur der Buchstabe 't' unterstrichen werden.
myl1 = Label(myroot, text='Python', width=20, height=5, fg='blue', underline=2, font=('Calibri', 15))
myl1.pack()
myroot.mainloop()
Besten Dank für jegliche Hinweise / Hilfe!

Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Samstag 18. November 2023, 17:18
von __blackjack__
@Raptor64: Bei mir ist das "t" unterstrichen.
Anmerkungen zum Quelltext: Sternchen-Importe sind Böse™. Da holt man sich gerade bei `tkinter` fast 140 Namen ins Modul von denen nur ein kleiner Bruchteil verwendet wird. Auch Namen die gar nicht in `tkinter` definiert werden, sondern ihrerseits von woanders importiert werden. Das macht Programme unnötig unübersichtlicher und fehleranfälliger und es besteht die Gefahr von Namenskollisionen.
`my` ist ein sinnloser Namenszusatz wenn man nicht den gleichen Namen als `our`- oder `their`-Variante hat gegen das man sich abgrenzen will.
Namen sollten keine kryptischen Abkürzungen enthalten oder gar nur daraus bestehen. Einbuchstabige Namen gehen eigentlich nur für `i`, `j`, `k` für ganzzahlige (Lauf)index-Werte, oder `x`, `y`, `z` für Koordinaten.
Man nummeriert keine Namen. Entweder will man sich dann passendere Namen überlegen, oder gar keine Einzelnnamen und -werte, sondern eine Datenstruktur. Oft eine Liste. Hier ist die 1 einfach nur überflüssig, Das Ding sollte einfach `label` heissen.
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Samstag 18. November 2023, 19:18
von Raptor64
@__blackjack__: Vielen Dank für die Überprüfung des Codes sowie das Feedback von meinen Testcode.
Mit welchem Editor hast Du den Code getestet? Ich benutze 'PyCharm Community Edition' (kostenlose Version von PyCharm). Könnte es sein, dass da gewisse Dinge nicht unterstützt werden?
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Samstag 18. November 2023, 19:28
von Dennis89
Hallo,
eher unwahrscheinlich, bei mir funktioniert es mit dem gleichen Editor auch.
Getestet mit Python 3.11, aber laut Python 3.12 Doku hat sich für 'tkinter' nur folgendes geändert:
https://docs.python.org/3.12/whatsnew/3.12.html#tkinter
Grüße
Dennis
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Samstag 18. November 2023, 20:24
von Raptor64
@Dennis89: Vielen Dank für Dein Feedback. Mal schauen, wo da da der 'Bock' bei meine Editor ist...
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Samstag 18. November 2023, 20:27
von grubenfox
und mit Python 3.7.5 ebenso erfolgreich (ganz ohne Editor, einfach in Python). tkinter.TkVersion und tkinter.TclVersion liefern beide 8.6
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Sonntag 19. November 2023, 14:15
von Raptor64
@Grubenfox: Danke für Deine Überprüfung. Scheint, ob bei mir irgendein Bug im System besteht. Ich kann z.B. problemlos ganze Wörter unterstreichen. Läuft prima, nur das mit dem indexbasierten Unterstreichen will nicht...
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Sonntag 19. November 2023, 14:24
von Sirius3
@Raptor64: Welches Betriebsystem verwendest Du denn?
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Sonntag 19. November 2023, 14:37
von Raptor64
@Sirius3: Ich verwende macOS 13.5.2 (Ventura).
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Sonntag 19. November 2023, 14:50
von __blackjack__
@Raptor64: Da hast Du den ”Bug”.

Das unterstreichen von einzelnen Zeichen ist ja als visuelle Hervorhebung für Tastenkürzel gedacht, und die MacOS-Richtlinien sehen unterstreichen dafür nicht vor.
Qt zeigt das beispielsweise auch nicht an. Aus der Qt-Dokumentation: „However, because mnemonic shortcuts do not fit in with Aqua's guidelines, Qt will not show the shortcut character underlined.“
Re: Nur einzelner Buchstabe im Label unterstreichen
Verfasst: Sonntag 19. November 2023, 15:23
von Raptor64
@__blackjack__: Vielen Dank für diese Info! Lesson learned! Alles andere funktioniert problemlos. Mein Tag ist jetzt gerettet!
