Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Python/Qt: Zur Laufzeit auf QWidgets zugreifen

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.05.2011
    Beiträge
    11

    Python/Qt: Zur Laufzeit auf QWidgets zugreifen

    [ich benutze Python3.0 und PyQt4]

    Hallo,
    ich habe eine eigentlich triviale, aber grundlegende Frage. Ich habe irgendwie noch nirgends eine Lösung gefunden, obwohl dieses Wissen eigentlich immer gebraucht wird.
    Und zwar möchte ich zur Laufzeit auf ein QWidget zugreifen - beispielsweise eine ein QLineEdit. Wie kann ich seinen Inhalt, also QLineEdit().text zur Laufzeit verändern?
    Ich habe z.B. eine von QWidget abgeleitete Form, erstelle darauf ein gridLayout und füge dem ein LineEdit hinzu - soweit so gut. Wenn ich jetzt aber aus anderen Methoden, die nicht die __init__ methode sind, den Text des Edits verändern will, weiß ich nicht, wie das geht.
    Code:
    class GrForm(QtGui.QWidget):
        """
        Formular
        """
        def __init__(self, parent = None):
            QtGui.QWidget.__init__(self, parent)
            
            grid = QtGui.QGridLayout()
            grid.setSpacing(10)
            
            lName = QtGui.QLabel('Gruppename')   
            lName.setAlignment(Qt.AlignRight)
                 
            grid.addWidget(lName, 1, 0)
     
            
            self.setLayout(grid)
    Ich stelle mir (inspiriert von Delphi) jetzt sowas zum Ändern des Textes vor
    Code:
    GrForm.grid.edit.text = "Blabla"
    Aber selbst wenn ich grid als Variable in der Klasse einfüge und das Edit auch, so viele mir im Moment keine andere Variante ein, als alle Elemente im Grid mit ihren Positionen in eine Liste zu schreiben und jedes mal, wenn etwas verändert wird, alles neu zu generieren. Aber das geht doch sicher auch einfacher?!
    Vielen Dank allen Helfenden!

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.05.2011
    Beiträge
    11

    Question

    Ich bin an der Frage gerade irgendwie am Verzweifeln, vielleicht kann mir jemand helfen, wenn ich sie anders formuliere: Ich habe eine Klasse, in der eine Form implementiert wird. Auf der Form habe ich ein Gitterlayout und in den Layout ein Element, auf das ich nun von einer anderen Methode zugreifen will:
    Code:
    class GrForm(QtGui.QWidget):
        """
        Formular fuer die Gruppen
        """
        def __init__(self, parent = None):
            QtGui.QWidget.__init__(self, parent)
            
            grid = QtGui.QGridLayout()
            grid.setSpacing(10)
            
            #[...]
            
            self.tPersonen = QListWidget()
            grid.addWidget(self.tPersonen, 3, 1)
            
            self.setLayout(grid)
            
    class MainWindow(QtGui.QMainWindow):
        def __init__(self, parent=None):
            QtGui.QWidget.__init__(self, parent)
            
            #[...]
            
            self.setGruppenLayout()
            
        def setGruppenLayout(self):
            self.setWindowTitle("Gruppendaten eingeben")
            
            content = GrForm()
            content.tPersonen.insertItems(0, ["asd", "aasdasdsd"]) #hier ist mein Problem!
            self.setCentralWidget(GrForm())
    Aber nichts passiert - der Liste werden keine Einträge hinzugefügt. Was mache ich falsch? Bzw: Wie mache ich es richtig?

  3. #3
    Registrierter Benutzer
    Registriert seit
    09.05.2011
    Beiträge
    11
    Nachdem ich jetzt lange verzweifelt nach der Lösung gesucht habe habe ich sie gefunden: Vorher beschriebener Code war eigentlich richtig, ich Depp habe bloß nicht mein manipuliertes "content" als CentralWidget gesetzt, sondern eine neu erzeugte Form. Alles ist also in Butter =).

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •