Seite 1 von 1

pyside2 name des widget

Verfasst: Montag 26. Oktober 2020, 20:47
von Fire Spike
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_())

Re: pyside2 name des widget

Verfasst: Montag 26. Oktober 2020, 22:36
von narpfel
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.