Um unter Ubunutu den Default-Style von Buttons zu überschreiben braucht es noch
Code: Alles auswählen
QPushButton:focus { background-color: yellow; outline:none; border:none;}
Code: Alles auswählen
QPushButton:focus { background-color: yellow; outline:none; border:none;}
Code: Alles auswählen
"""
**********************************************************************************************
* Mit Python und Qt eine Anwendung entwickeln die für Blinde und Sehbehinderte bedienbar ist *
**********************************************************************************************
Folgende Barrierefreie Kriterien demonstriert diese Anwendung:
1. Screenreadertauglichkeit
Screenreader ist eine Software die den Bildschirminhalt vorliest Blinde und auch
einige Sehbehinderte Menschen können nur Software bedienen die dem Screenreader
Texte übermitteln welche die Bedienelemente beschreiben.
In Java und C# werden Texte für Screenreader in der Eigenschaft "AccessibleDescription"
hinterlegt. Diese Eigenschaft gibt es auch in Qt. Leider wird sie im Betriebssystem
Windows von den Screenreadern NVDA und Jaws nicht ausgelesen.
Deswegen werden die Texte für Screenreader in der Eigenschaft "AccessibleName" hinterlegt.
Die Software wurde erfolgreich mit folgenden Screenreadern getestet:
NVDA, Betriebssystem Windows
Jaws, Betriebssystem Windows
Orca, Betriebssystem Ubuntu
2. Tastaturbedienbarkeit
Alle Bedienelemente sind per Tabulatortaste erreichbar. Die Schalter können per Entertaste ausgeführt.
Die Tastaturbedienbarkeit ist für blinde und sehbehinderte Menschen wichtig.
Zur Tastaturbedienbarkeit gehört auch das Beschriftung mit Eingabefelder verknüpft sind.
Das geht über die Labelmethode setBuddy.
3. Visuelle und programmgesteuerte Anzeige der Position des Tastaturfokus
Damit Menschen mit einer Sehbehinderung erkennen welches Bedienelement aktiv ist,
muss eine Software dies deutlich sichtbar machen. Meine Lieblingsmethode ist,
dass aktive Bedienelement bekommt die Hintergrundfarbe Gelb.
"""
import os
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import QSize
class MainWindow(QWidget):
def __init__(self):
# Konstruktor von QMainWindow aufrufen
super().__init__()
self.button_betriebssystem = QPushButton("Name des &Betriebssystem", self)
self.button_anwender = QPushButton("Hallo &Anwender", self)
self.label_vor_nachname = QLabel("&Vor-und Nachname:", self)
self.edit_vor_nachname = QLineEdit(self)
self.programm_beenden = QPushButton("&Ende", self)
#Texte für Screenreader setzen
self.button_betriebssystem.setAccessibleName("Es wird ausgegeben wie das Betriebssystem heißt")
self.button_anwender.setAccessibleName("Der Anwender wird begrüßt")
self.edit_vor_nachname.setAccessibleName("Geben Sie bitte Vor-und Nachname ein")
self.programm_beenden.setAccessibleName("Progamm wird beendet")
#Die Positionen wird in Zeilen und Spalten angegben
self.layout_barrierefrei = QGridLayout()
self.layout_barrierefrei.addWidget(self.button_betriebssystem, 0, 0)
self.layout_barrierefrei.addWidget(self.button_anwender, 1, 0)
self.layout_barrierefrei.addWidget(self.label_vor_nachname,2,0)
self.layout_barrierefrei.addWidget(self.edit_vor_nachname,2,1)
self.layout_barrierefrei.addWidget(self.programm_beenden,3,0)
self.setLayout(self.layout_barrierefrei)
# Fenstergröße und Titel einstellen
self.setMinimumSize(QSize(450, 350))
self.setWindowTitle('Barrierefreiheit mit Python und Qt')
self.showNormal()
# self.button_betriebssystem.setGeometry(100, 10, 170, 60)
self.button_betriebssystem.setToolTip("Es wird ausgegeben wie das Betriebssystem heißt")
self.button_betriebssystem.clicked.connect(self.betriebssystem_abfragen)
self.button_anwender.setToolTip("Der Anwender wird begrüßt")
self.button_anwender.clicked.connect(self.benutzergruessen)
self.edit_vor_nachname.setToolTip("Geben Sie Vor-und Nachname ein")
self.edit_vor_nachname.setText("Markus Lemcke")
# 2. Tastaturbedienbarkeit
self.label_vor_nachname.setBuddy(self.edit_vor_nachname)
self.programm_beenden.setToolTip("Programm Beenden")
self.programm_beenden.clicked.connect(self.close)
def betriebssystem_abfragen(self):
os_info = sys.platform
print("Betriebssytem: " + os_info)
def benutzergruessen(self):
Text = "Guten Tag " + self.edit_vor_nachname.text()
print(Text)
def main():
app = QtWidgets.QApplication([])
# 3. Visuelle und programmgesteuerte Anzeige der Position des Tastaturfokus
app.setStyleSheet("""
QPushButton:focus { background-color: yellow }
QLineEdit:focus { background-color: yellow }
""");
win = MainWindow()
win.showNormal()
app.exec_()
if __name__ == '__main__':
main()