QWidget in einem QMainWindow mit PyQt

Alles rund um die Programmierung mit Qt
Antworten
pucky
Beiträge: 9
Registriert: 29. April 2008 23:05

QWidget in einem QMainWindow mit PyQt

Beitrag von pucky »

Hallo zusammen,
ich versuche gerade einen einfachen Eingabedialog aufzubauen. Dabei habe ich es mir aber irgendwie in den Kopf gesetzt das nicht einfach mit einem Widget sondern einem MainWindow zu machen. Aus der Qt-Doku habe ich erfahren, daß jedes MainWindow auch automatisch einige Widgets hat. Eingabedialog direkt in das MainWindow zu positionieren geht nicht? Frage!
Also habe ich gedacht ich daß ich mit der Methode "setCentralWidget" in das "Central Widget" ein generisches Widget einbaue, welches meinen Eingabedialog beinhaltet.
Dieser besteht aus 2X2 QLineEdit mit dazu passenden Labels. Ach ja noch ein Button zum abschicken.

Ich habe es folgendermaßen versucht:

Code: Alles auswählen

import sys
from PyQt4 import QtGui, QtCore

class MyMainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self)

        self.setObjectName("MainWindow")
        self.resize(450, 450)
        self.setWindowTitle('QEdit')
        
        myWidget = QtGui.QWidget()
        
        myWidget.register = QtGui.QLabel('Register')
        myWidget.registerEdit = QtGui.QLineEdit()
        myWidget.registerEdit.setGeometry(QtCore.QRect(30,120,110,24))
        
        self.setCentralWidget(myWidget)

app = QtGui.QApplication(sys.argv)
main = MyMainWindow()
main.show()
sys.exit(app.exec_())
aber so geht es leider nicht. Ich bekomme nur ein MainWindow und nichts darin!

Was mache ich faslch?

Vielen Dank

Gruss Christian
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wie kommst du auf sowas?

Code: Alles auswählen

myWidget = QtGui.QWidget()

myWidget.register = QtGui.QLabel('Register')
myWidget.registerEdit = QtGui.QLineEdit()
myWidget.registerEdit.setGeometry(QtCore.QRect(30,120,110,24))
Und darauf dass das klappt?!?

In der Doku find ich nirgends ein Member "register" oder "registerEdit" von QWidget.
Du musst dir schon ein Layout erstellen, sowie ein register und ein registerEdit, welche du dann ins Layout einfügst.
Dieses Layout weist du dann dem widget zu.

Das schaut dann z.B. so aus:

Code: Alles auswählen

import sys
from PyQt4 import QtGui, QtCore

class MyMainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self)

        self.setObjectName("MainWindow")
        self.resize(450, 450)
        self.setWindowTitle('QEdit')

        myWidget = QtGui.QWidget()
        myLayout = QtGui.QHBoxLayout()

        register = QtGui.QLabel('Register')
        registerEdit = QtGui.QLineEdit()
        registerEdit.setGeometry(QtCore.QRect(30,120,110,24))

        myLayout.addWidget(register)
        myLayout.addWidget(registerEdit)
        myWidget.setLayout(myLayout)

        self.setCentralWidget(myWidget)

app = QtGui.QApplication(sys.argv)
main = MyMainWindow()
main.show()
sys.exit(app.exec_()) 
Grüße
Franz
pucky
Beiträge: 9
Registriert: 29. April 2008 23:05

Beitrag von pucky »

Hallo franzf,
vielen Dank für die Hilfe. Damit komme ich schon bedeutend weiter. Ich hatte auch schon Layouts eingebaut, aber damit hat es auch nicht funktioniert aus irgendwelchen Gründen...

Meine Beispiele habe ich vor allem hierher: http://zetcode.com/tutorials/pyqt4/

Aber da ich sowohl mit Python als auch mit Qt gerade anfange muss man erst noch einen Einstieg bekommen.

Vielen Dank auf jeden Fall

Gruss Christian
Antworten