Größe der Schrift im Betriebssystem ins Python Qt-Programm übernehmen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Hallo,

im Betriebssystem Windows können Menschen mit einer Sehbehinderung in „Einstellungen“ → „Erleichterte Bedienung“ → „Anzeige“ bei „Text vergrößern“ die Schrift des Betriebssystems auf 125% vergrößern. Diese Änderung übernimmt mein Python Qt-Programm nicht.

Anmerkung:
Bei Java Swing kann es erreicht werden in dem ein bestimmter Javacode implementiert wird. Bei JavaFX funktioniert die Übernahme ohne extra Javacode.

Frage:
Was muß ich tun damit solch eine Änderung in mein Python-Qt-Programm übernommen wird?
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Hallo,

von Qt habe ich folgende Antwort bekommen:
„If PySide was installed on the system (the case of some Linux distributions) that respect the global setting, but in your case, PySide will be installed on a Python environment that use the Qt libs from within the package, hence the system settings should not interact with the package.

The only solution is to do this code wise:

Code: Alles auswählen

app = QApplication()
w = QPushButton("testing button")
w.show()

# Get the from the Application
font = app.font()
# Set 1.5x the current size 
font.setPointSize(font.pointSize() * 1.5
# apply the new size to the app
app.setFont(font)

sys.exit(app.exec_())
Ich als Python-Neuling verstehe die Antwort nur halb.
Kann Sie mir jemand bitte erklären?
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du hast pyside selbst installiert, und damit die Integration mit dem System verloren. Der gezeigte Code vergroessert die Schrift einfach nur um 50% gegenueber der Default-Einstellung. Das ist IMHO nicht wirklich eine Antwort auf die Frage, weil es ja nicht automatisch funktioniert. Aber das ist, was sie dir schreiben.
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

__deets__ hat geschrieben: Montag 15. Juni 2020, 11:41 Du hast pyside selbst installiert, und damit die Integration mit dem System verloren. Der gezeigte Code vergroessert die Schrift einfach nur um 50% gegenueber der Default-Einstellung. Das ist IMHO nicht wirklich eine Antwort auf die Frage, weil es ja nicht automatisch funktioniert. Aber das ist, was sie dir schreiben.
Vielen Dank!
Um zu einem Ergebnis zu kommen:
In Java(eine plattformunabhängige Programmiersprache) kann die Größe der Schrift im Betriebssystem übernommen, aber in Python leider nicht.
Richtig?
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythonMarlem: Das geht auch in Python beziehungsweise hat das mit Python als Programmiersprache ja erst einmal gar nichts zu tun was Bibliotheken machen die nicht direkt mit der Sprache kommen. Unter Windows und so wie das bei Dir installiert ist, scheint das nicht vom System übernommen zu werden. Was man da sicher machen könnte ist sich die Information mit `pywin32` & Co auf dem normalen für Windows vorgesehenen Weg zu holen und zu verwenden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

es funktioniert nicht so elegant wie mit Java, aber sehbehinderte Menschen können per Anwendungsparameter die Schriftgröße mitgeben:

Code: Alles auswählen

def AppSchriftSetzen(appv,fontsize):
    font = appv.font()
    font.setPointSize(font.pointSize() * fontsize)
    appv.setFont(font)

Code: Alles auswählen

def main():
    ....
    if len(sys.argv) >= 2:
        AppSchriftSetzen(app, int(sys.argv[1]))
    else:
      AppSchriftSetzen(app, 0);
      
    win.showNormal()
    app.exec_()

if __name__ == '__main__':
    main()
Angenommen ein Mensch mit Sehbehinderung hat im Betriebssystem größere Schrift eingestellt und möchte nun das Python-Programm auch mit größerer Schrift starten, dann kann er die Schriftgröße als Parameter mitgeben:
python.exe Barrierefrei.py 2
Die 2 ist die Schriftgröße.
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn man das schon so umstaendlich macht, dann wenigstens mit dem Modul argparse oder etwas aehnlichem. Damit man auch mehr Parameter angeben kann (Farbenblindheit zB).

So oder so macht man das nicht. Die APIs die Java benutzt, kannst du auch von Python aus benutzen. MS hat viele Dokumente zu dem Thema. Das solltest du dann machen.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

@PythonMarlem:
Nur mal nebenbei gefragt: Benutzt du PySide?
Denn mich wundert, dass deine zitierte Antwort sich sowohl auf PySide als auch auf Linux bezieht. Und ich würde fast wetten, dass du weder Linux noch PySide verwendest. Möglicherweise gab es da ein Kommunikationsproblem?
Antworten