pyside2 name des widget

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Hallo, ich lade mit pyside2 eine .ui Datei. Dannach suche ich alle QCheckBox'en. Wenn ich allerdings den name den ich im Qt Designer definiert habe ausgeben will bekomme ich nur ein Leerzeichen.
Könnt ihr vielleicht auf meinen Code schauen?

Code: Alles auswählen

import sys
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication, QCheckBox
from PySide2.QtCore import QFile

def hello():
    print("hello")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    file = QFile("windows.ui")
    file.open(QFile.ReadOnly)
    loader = QUiLoader()
    window = loader.load(file)
    window.CompileButton.clicked.connect(hello)
    for widget in window.findChildren(QCheckBox):
        print(widget.accessibleName())
        
    window.show()
    sys.exit(app.exec_())
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

Moin,

der Name vom Widget ist `objectName`. `accessibleName` ist der Name, den z. B. Screenreader vorlesen.

Generell ist das ein wenig eigenartig, auf dynamisch auf die Namen von Widgets in der UI zuzugreifen, würde ich sagen. Wozu brauchst du das denn und warum kommst du nicht über die Struktur der UI oder per Signal/Slot an die Checkboxen?

Alles in dem `if __name__ == "__main__"`-Block sollte in einer Funktion stehen, damit man nicht versehentlich auf die darin erzeugten globalen Variablen zugreifen kann.
Antworten