Unterfenster wird nicht angezeigt

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

Unterfenster wird nicht angezeigt

Beitrag von pucky »

Hallo zusammen,
ich habe folgendes Widget definiert:

Code: Alles auswählen

class ReadRegister(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setObjectName("ReadRegister")
        self.resize(250, 400)
        self.setWindowTitle('ReadRegister')
        self.show()
     
Dieses soll von einer Methode erzeugt werden, die über einen Button im Hauptfenster aufgerufen wird.
Die Methode:

Code: Alles auswählen

def readregDialog(self):
        readreg = ReadRegister()
        print "hallo"
        #readreg.show()
und der Signalhandler, der diese Methode über einen Button aufruft.

Code: Alles auswählen

self.connect(readregButton, QtCore.SIGNAL('clicked()'), self.readregDialog )
Die Methode funktioniert, sie wird ausgeführt, deshalb habe ich dieses sinnlose "hello" ausgeben lassen. Aber das ReadRegister-Widget wird nicht angezeigt. Ich habe es mit .show() in der Klasse selbst sowie der Funktion versucht. Es wird einfach nicht angezeigt.

Kann mir jemand einen schnellen Tip geben?

Vielen Dank

Gruss Christian
ganwell
Beiträge: 13
Registriert: 8. Januar 2009 18:50
Wohnort: Luzern, Schweiz
Kontaktdaten:

Beitrag von ganwell »

Hallo, ich kenne diese Sprache nicht, aber kann es sein, dass readreg eine locale Variable ist und die gleich wieder garbage collected wird oder etwas ähnliches?

Ganwell
pucky
Beiträge: 9
Registriert: 29. April 2008 23:05

Beitrag von pucky »

ganwell hat geschrieben:Hallo, ich kenne diese Sprache nicht, aber kann es sein, dass readreg eine locale Variable ist und die gleich wieder garbage collected wird oder etwas ähnliches?

Ganwell
Ich bin in Python leider auch noch ein Newbie, was noch erschwerend hinzukommt, aber ich habe inzwischen noch einen Eingabedialog (genauer ein QLineEdit) hinzugefügt. Also das Fenster erwartet User-Eingabe! Ich denke unter diesen Umständen sollte der Garbage Collector nicht einschreiten? Sonst weiß ich auch nicht weiter, das Fenster wird aber zumindest kurz angezeigt und verschwindet dann. Von daher kann das schon sein mit dem GC?!??
Oh mann, das ist bestimmt ein winziges Detail das ich nicht sehe?

Gruss Christian
ganwell
Beiträge: 13
Registriert: 8. Januar 2009 18:50
Wohnort: Luzern, Schweiz
Kontaktdaten:

Beitrag von ganwell »

punky hat geschrieben: das Fenster wird aber zumindest kurz angezeigt und verschwindet dann
Das ist genau das Anzeichen dafür, dass readreg weggeräumt wird. Du hast damit zwei möglichkeiten:

a) Du schreibst

self.readreg = ReadRegister()

damit readreg eine Instanzvariable ist. Ich hoffe mal das ist gültiger Pythoncode.

b) Du verwendest wie gehabt eine lokale Variable und nimmst aber einen QDialog und rufst mit exec() den Dialog modal auf, was wahrscheinlich sowieso Deine Absicht ist. Achte darauf, dass der Dialog WindowModal ist.

Ausserdem würde ich empfehlen eine Sprache zu nehmen die Du kennst.

Gruss
Ganwell
Antworten