PyQt: Unterfenster dauerhaft im Vordergrund

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
max2

PyQt: Unterfenster dauerhaft im Vordergrund

Beitragvon max2 » Mittwoch 1. Dezember 2004, 14:08

Hallo,

ich möchte mit PyQt ein Unterfenster öffnen, welches im Vordergrund bleibt und die Bedienelemente des aufrufenden Fensters blockiert. Kleines Beispiel:

parent.py:

Code: Alles auswählen

import sys
from qt import *
from child import Child

class Parent(QMainWindow):
    def __init__(self,parent = None,name = None,fl = 0):
        QMainWindow.__init__(self,parent,name,fl)
        self.statusBar()
        if not name:
            self.setName("parent")
        self.setCaption("parent")
        self.setCentralWidget(QWidget(self,"qt_central_widget"))
        self.startButton = QPushButton(self.centralWidget(),"startButton")
        self.startButton.setGeometry(QRect(50,50,151,41))
        self.startButton.setText("Start !")
        self.resize(QSize(243,178).expandedTo(self.minimumSizeHint()))
         self.connect(self.startButton,SIGNAL("released()"),self.startChildWindow)
    def startChildWindow(self):
        c = Child()
        c.show()
        c.exec_loop()       #  Fehlermeldung :(
         
if __name__ == "__main__":
    app = QApplication(sys.argv)
    QObject.connect(app,SIGNAL("lastWindowClosed()"),app,SLOT("quit()"))
    p = Parent()
    app.setMainWidget(p)
    p.show()
    app.exec_loop()


child.py:

Code: Alles auswählen

from qt import *

class Child(QWidget):
    def __init__(self,parent = None,name = None,fl = 0):
        QWidget.__init__(self,parent,name,fl)
        if not name:
            self.setName("child")
        self.setCaption("child")
        self.textLabel1 = QLabel(self,"textLabel1")
        self.textLabel1.setGeometry(QRect(150,30,135,61))
        self.textLabel1.setText("<h2>Wirklich?</h2>")
        self.CancelButton = QPushButton(self,"CancelButton")
        self.CancelButton.setGeometry(QRect(20,130,151,41))
        self.CancelButton.setText("Cancel")
        self.textLabel1.setText("<h2>Wirklich?</h2>")
        self.OkayButton = QPushButton(self,"OkayButton")
        self.OkayButton.setGeometry(QRect(230,130,151,41))
        self.OkayButton.setText("Okay")
        self.resize(QSize(413,234).expandedTo(self.minimumSizeHint()))
        self.connect(self.OkayButton,SIGNAL("released()"),self.doOkay)
        self.connect(self.CancelButton,SIGNAL("released()"),self.close)

    def doOkay(self):
        print "Starte ..."


Das Unterfenster wird zwar aufgerufen, aber das Parent-Fenster bleibt bedienbar. Außerdem gibt es eine Fehlermeldung: "AttributeError: exec_loop", ohne diesen Aufruf wird jedoch nichts angezeigt. Wie macht man es also richtig? Oder wird das Unterfenster garnicht von QWidget abgeleitet? Danke im voraus für alle Hinweise.

Grüße
max
max2

Lösung ...

Beitragvon max2 » Montag 6. Dezember 2004, 16:05

Also dann für die Suchmaschine:

Unterfenster von QDialog ableiten und nach self.setModal(1) bleibt es "oben".

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder