Seite 1 von 1

PyQT macht alles 4fach

Verfasst: Sonntag 24. August 2008, 21:55
von alfonsospringer
Hallo zusammen!

Ich bin zwar noch relativ neu bei Python, aber da ich bereits in C++ Erfahrungen mit Qt gesammelt habe, habe ich mich direkt (nach den absoluten Grundlagen) pyqt zugewand und bin gleich auf ein merkwürdiges Problem gestoßen. PyQT scheint alles 4fach zu machen. Soll heissen: Ich drücke auf einen Knopf und er schreibt nicht einmal sondern 4 mal "Hallo welt". Kann mir jemand bitte erklären, wie das zustandekommt und wie ichs beheben kann?

Code: Alles auswählen

import sys 
from PyQt4 import QtGui, QtCore 
from hauptfenster import Ui_hauptfenster as Dlg

class MeinDialog(QtGui.QDialog, Dlg): 
	def __init__(self): 
		QtGui.QDialog.__init__(self)
		self.setupUi(self)
		QtCore.QMetaObject.connectSlotsByName(self)
		
	def on_button_clicked(self): 
		print "Hallo Welt"
		
app = QtGui.QApplication(sys.argv) 
dialog = MeinDialog() 
dialog.show() 
sys.exit(app.exec_())
Die Klasse hauptfenster ist lediglich eine mit pyuic4 umgesetzte Designer Datei, die nur einen leeren Dialog mit dem knopf "button" beinhaltet

Verfasst: Montag 25. August 2008, 09:58
von alfonsospringer
Villeicht ist es besser, wenn ich euch gleich das ganze Programm zum ausführen gebe.

http://barthimaeus.dyndns.org/PyQT-help.zip

Bitte schaut's euch mal an.

Verfasst: Montag 25. August 2008, 12:16
von alfonsospringer
Ich habe jetzt das QtCore.QMetaObject.connectSlotsByName(self) aus dem Konstruktor entfernt, denn mir ist aufgefallen, dass dies im automatisch generierten Code schon enthalten ist. Jetzt erscheint der Text nur noch doppelt - aber warum? Aus irgendeinem Grund wird entweder das clicked() Signal zweimal ausgestrahlt oder der Slot zweimal damit verbunden...

Edit: Wenn ich das Programm auf einem anderen Rechner ausführe habe ich das selbe Problem. Folglich muss der Fehler im Code irgendwo sein und nicht in meiner Python+PyQt Installation

Edit2: Kann mir denn wirklich niemand helfen? Das ist total deprimerend :(

Verfasst: Montag 25. August 2008, 17:36
von lunar

Verfasst: Montag 25. August 2008, 17:47
von alfonsospringer
Vielen dank! Das erklärt Alles.

@QtCore.pyqtSignature("hier wird spezifiziert welche der überladenenen FUnktionen gemeint ist")

Verfasst: Montag 29. September 2008, 19:25
von alfonsospringer
Hat sich erledigt, danke