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:
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()
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.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
@__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?
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
"When I got the music, I got a place to go" [Rancid, 1993]
@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...
@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.“
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.