QFont - gleiche Werte bei verschiedenen Fontgrößen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

Hallo zusammen,

Mir ist bei folgendem Code aufgefallen, dass bei unterschiedlichen Fontgrößen, immer die gleiche Texthöhe ich bei QFont erhalte.
Vielleicht könnt Ihr mir dabei helfen, dies zu lösen!

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import (
	QApplication,
	)
from PyQt5.QtGui import  (
	QFont,
	QFontMetrics,
	QFontMetricsF
	)

if __name__ == '__main__':
	app = QApplication(sys.argv)

	text_string = 'Text'
	font_size = 10
	f = QFont()
	f.setFamily('NimbusSansL')
	f.setWeight(int(font_size))
	fm = QFontMetricsF(f)
	text_height = fm.height()
	text_width = fm.width(text_string)
	print('text_height: ', text_height)
	print('text_width: ', text_width)
Grüße Nobuddy
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Schau mal was du da einstellst: https://doc.qt.io/qt-6/qfont.html#Weight-enum - das ist nicht, was du glaubst, was du einstellst.
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

Hallo __deets__,
habe mit meinem Englisch Probleme, aber habe setPointSize entdeckt, das sollte für text_height das Richtige sein.
Ist setWeight das Richtige für die Textweite?

Die Höhe vom Font sowie die Breite des Textes sind für mich wichtig, um den Text richtig platzieren zu können. Daher, wenn Du weitere Tipps für mich hast, wäre ich Dir dankbar!

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import (
	QApplication,
	)
from PyQt5.QtGui import  (
	QFont,
	QFontMetrics,
	QFontMetricsF
	)

if __name__ == '__main__':
	app = QApplication(sys.argv)

	text_string = 'Text'
	font_size = 10
	f = QFont()
	f.setFamily('NimbusSansL')
	f.setPointSize(int(font_size))
	fm = QFontMetricsF(f)
	text_height = fm.height()
	print('text_height: ', text_height)
	f.setWeight(int(font_size))
	fm = QFontMetricsF(f)
	text_width = fm.width(text_string)
	print('text_width: ', text_width)
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein, Breite ist Width, nicht Weight. Weight ist Schwere, oder im Schriftartenbezug die Staerke. Also duenn oder dick.
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

Danke, für die Erklärung ... dann brauche ich "setWeight" nicht.
Mit "setPointSize" erhalte ich die richtige Texthöhe.

Die Textbreite passt als nicht in eine Zeile, kann das am Font "NimbusSansL" liegen?
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Frage verstehe ich nicht. Wenn dein Text zu breit ist, liegt das an deinem Font, deiner Fontgroess, deiner Fensterbreite, oder deiner Textmenge. Was auch immer davon nicht passt.
Nobuddy
User
Beiträge: 997
Registriert: Montag 30. Januar 2012, 16:38

Ja, liegt an dem Font und Format.
Wenn ich den Standard Font von qt nehme, dürfte es das Problem nicht geben.
Vielleicht, lässt sich das auch mit einem Code, die Differenz in der Formatausgabe erreichen.
Überlege mir mal was.
Antworten