Nur einzelner Buchstabe im Label unterstreichen

Fragen zu Tkinter.
Antworten
Raptor64
User
Beiträge: 6
Registriert: Samstag 18. November 2023, 14:57

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! :)
Benutzeravatar
__blackjack__
User
Beiträge: 13291
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
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.
Raptor64
User
Beiträge: 6
Registriert: Samstag 18. November 2023, 14:57

@__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?
Benutzeravatar
Dennis89
User
Beiträge: 1226
Registriert: Freitag 11. Dezember 2020, 15:13

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
"When I got the music, I got a place to go" [Rancid, 1993]
Raptor64
User
Beiträge: 6
Registriert: Samstag 18. November 2023, 14:57

@Dennis89: Vielen Dank für Dein Feedback. Mal schauen, wo da da der 'Bock' bei meine Editor ist...
Benutzeravatar
grubenfox
User
Beiträge: 457
Registriert: Freitag 2. Dezember 2022, 15:49

und mit Python 3.7.5 ebenso erfolgreich (ganz ohne Editor, einfach in Python). tkinter.TkVersion und tkinter.TclVersion liefern beide 8.6
Raptor64
User
Beiträge: 6
Registriert: Samstag 18. November 2023, 14:57

@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...
Sirius3
User
Beiträge: 17861
Registriert: Sonntag 21. Oktober 2012, 17:20

@Raptor64: Welches Betriebsystem verwendest Du denn?
Raptor64
User
Beiträge: 6
Registriert: Samstag 18. November 2023, 14:57

@Sirius3: Ich verwende macOS 13.5.2 (Ventura).
Benutzeravatar
__blackjack__
User
Beiträge: 13291
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
Raptor64
User
Beiträge: 6
Registriert: Samstag 18. November 2023, 14:57

@__blackjack__: Vielen Dank für diese Info! Lesson learned! Alles andere funktioniert problemlos. Mein Tag ist jetzt gerettet! :D
Antworten