PyQT macht alles 4fach

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
alfonsospringer
User
Beiträge: 34
Registriert: Sonntag 24. August 2008, 21:50

Sonntag 24. August 2008, 21:55

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
alfonsospringer
User
Beiträge: 34
Registriert: Sonntag 24. August 2008, 21:50

Montag 25. August 2008, 09:58

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.
alfonsospringer
User
Beiträge: 34
Registriert: Sonntag 24. August 2008, 21:50

Montag 25. August 2008, 12:16

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 :(
alfonsospringer
User
Beiträge: 34
Registriert: Sonntag 24. August 2008, 21:50

Montag 25. August 2008, 17:47

Vielen dank! Das erklärt Alles.

@QtCore.pyqtSignature("hier wird spezifiziert welche der überladenenen FUnktionen gemeint ist")
alfonsospringer
User
Beiträge: 34
Registriert: Sonntag 24. August 2008, 21:50

Montag 29. September 2008, 19:25

Hat sich erledigt, danke
Antworten