PyQt: Unterfenster dauerhaft im Vordergrund
Verfasst: 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:
child.py:
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
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()
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 ..."
Grüße
max