Tiefgestellte Griechische Buchstaben - Labelbezeichnung

Fragen zu Tkinter.
Antworten
Sabbse92
User
Beiträge: 13
Registriert: Samstag 29. Februar 2020, 20:02

Guten Abend zusammen,

in meiner GUI verwende ich zwei Labelbezeichnung bei denen folgende Symbole auftauchen

- text = "random text \Omega_{mu}" (großes griechisches Omega und tiefgestelltes kleines mu)
- text = "random text \Omega_{sigma}"

Ich habe schon mehrere englische Foren durchsucht. In diesen finde ich aber nur Lösungen bei den Zahlen oder normale Symbole des Alphabets a,b,c,.. tiefgestellt sind

Existiert eine Lösung die nicht matplotlib/latex verwendet ?

Hier ist ein Minimalbsp.:

Code: Alles auswählen

import tkinter as Tk
root = Tk.Tk()
Tk.Label(root, text="Hier steht ein großes Omega: \u03a9").pack()
root.mainloop()
Sirius3
User
Beiträge: 18289
Registriert: Sonntag 21. Oktober 2012, 17:20

Du kannst nur Unicode-Zeichen in Labels verwenden: an griechischen Subscripts gibt es ᵦᵧᵨᵩᵪ.
Sabbse92
User
Beiträge: 13
Registriert: Samstag 29. Februar 2020, 20:02

Wenn ich z.B. ein tiefgestelltes rho anzeigen möchte, muss ich laut

https://www.compart.com/de/unicode/U+1D68

den Unicode \u1d68 verwenden.

Wenn ich diesen in Unicode hinzufüge, wird das tiefgestellte rho als Kästchen angezeigt (siehe unteres Bild):

Bild


Code: Alles auswählen

import tkinter as Tk
root = Tk.Tk()
Tk.Label(root, text="Hier steht ein großes Omega: \u03a9\u1d68").pack()
root.mainloop()
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

import tkinter as Tk
root = Tk.Tk()
Tk.Label(root, text="Hier steht ein großes Omega: \u03a9").pack()
Tk.Label(root, text="Hier steht ein kleines roh: \u03c1").pack()
Tk.Label(root, text="und hier steht ein grosses Roh: \u03a1").pack()
root.mainloop()
https://unicode-table.com/de
Gruss
Peter
Sirius3
User
Beiträge: 18289
Registriert: Sonntag 21. Oktober 2012, 17:20

@peterpy: es geht nicht um das kleine Roh sondern um ein Tiefgestelltes.

@Sabbse92: dann unterstützt der gewählte Font dieses Zeichen nicht.
Bild
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo Sabbse92,

sorry, das tiefgestellt ist mir entgangen.
Dafür hab ich mir die Mühe genommen, das tiefgestellte Roh doch noch hinzubekommen.
Leider nicht in einem Labelwidget, sondern in einem Textwidget.
Mit dem offset gibst Du die Position des Zeichens an.
Negativ = Unterhalb der Unterline, positive oberhalb.
Ob dir das wohl dient?
#!/usr/bin/env python3 -u
#-*- coding: #utf-8 -*-

from tkinter import Tk, font, Text

root = Tk()
schrift = font.Font(family='DejaVu Sans', size=16, underline=True,
weight='normal')
schrifttief = font.Font(family='DejaVu Sans', size=12,
weight='normal')
subletter = '\u03C1'#kleines Roh
text="Hier steht ein grosses ROH,\n\
vor einem kleinen roh,\n\
vor einem kleinen,tiefgestellten Roh:\n \u03a1\u03C1"
fenster = Text(root, width=40, font=schrift)
fenster.insert("insert", text)
index2 = "%s%s" %(str(len(text)), ".0")
fenster.tag_add("Text", 1.0, index2)
fenster.tag_config("tiefstelle", offset=-7)
fenster.tag_config("Text", justify="center")
fenster.insert("insert", subletter,"tiefstelle")
fenster.tag_config("tiefstelle", font=schrifttief)
fenster.pack()
root.mainloop()
Gruss
Peter
Antworten