objekte einer Form abfragen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Sonntag 29. November 2009, 20:33

Hallo Forum,

ich will alle Objekte auf einer Form abfragen so in der Art:

Code: Alles auswählen

for widget in Form:
    if widget.name == gesuchtername:
        widget.setText() = "hallo"

Das war nur natürlich nur so ein Pseudocode, aber ich hoffe ich konnte verständlichmachen was ich suche. Vielleicht hat jemand ein paar Beispielcodezeilen für mich.

Grüße und einen schönen abend
alpha
lunar

Sonntag 29. November 2009, 21:51

QObject.findChild und QObject.findChildren():

Code: Alles auswählen

# das erste Steuerelement namens foo
widget = form.findChild(QWidget, 'foo')
# alle Steuerelemente namens foo
for widget in form.findChildren(QWidget, 'foo'):
    widget.doit()
# oder auch mit regulären Ausdrücken
pattern = QRexExp('some.*pattern')
for widget in form.findChildren(QWidget, pattern):
    widget.doit()
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Montag 30. November 2009, 09:03

Hi lunar,

genau was ich gesucht habe. Werde ich (hoffentlich) heute Abend gleich mal ausprobieren. Ich danke Dir.

Gruß
alpha
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Montag 30. November 2009, 18:18

Hallo lunar,

hat ja super geklappt jetzt habe ich nur noch das Problem, dass ich in einer ComboBox den Wert speichere. Beim Wiederherstellen muss ich aber den Index setzen... Soweit kein Problem, aber wenn ich in der Funktion

Code: Alles auswählen

index = ComboBox.findText("hallo", 16)
angebe bekomme ich folgende Fehlermeldung:
TypeError: argument 2 of QComboBox.findText() has an invalid type
in der QT Dokumentation habe ich folgendes gefunden

int QComboBox::findText ( const QString & text, Qt::MatchFlags flags = Qt::MatchExactly | Qt::MatchCaseSensitive ) const

Jetzt die Preisfrage.. WIe setze ich die MatchFlags richtig?

Hoffe Du kannst mir noch einmal helfen
Grüße
alpha
lunar

Montag 30. November 2009, 19:34

Die Match-Flags sind ein optionales Argument, Du musst es nicht setzen. Ansonsten musst Du eben eine Kombination entsprechender Flags mitgeben, eben z.B. "Qt.MatchExcatly | Qt.MatchCaseSensitive".
alpha
User
Beiträge: 195
Registriert: Freitag 23. Mai 2003, 23:24
Wohnort: Ulm

Montag 30. November 2009, 20:22

Da seh ich den Wald vor bäumen nicht.. ich hätte schwören können ich hätte einen Fehler bekommen, daß ich zu wenig Argumente übergeben hätte... Ich danke Dir lunar.

Schönen Abend
alpha
Antworten