Seite 1 von 1
QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 20:22
von init-0
Hallo,
ich schreibe gerade ein Programm und ich habe dabei ein Problem.
Ich habe da einen Cutton und mehrere SpinBoxen und noch anderes.
Der Button wird so erstellt:
Code: Alles auswählen
self.button = QtGui.QPushButton("drucken", self)
self.button.move(415,330)
self.button.clicked.connect(self.drucken)
Und wenn ich das Programm ausführe reagiert der Button manchmal einfach nicht. Das gleiche gilt dann für die SpinBoxen, aber der Rest bleibt funktionstüchtig.
Wenn ich dann ein bisschen mit der Oberfläche rumspiele kann ich den Butten bald drücken, aber dann geht es wieder von vorne los.
Ich kann diesen Fehler nicht gezielt wieder produzieren.
Habt ihr eine Idee woran das liegen könnte?
Re: QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 20:32
von nomnom
Funktioniert bei mir prima:
Code: Alles auswählen
# coding: utf-8
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.button = QPushButton(u"Drück mich.", self)
self.button.clicked.connect(foobar)
self.show()
def foobar():
print 'clicked'
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Example()
sys.exit(app.exec_())
Vielleicht tust du in self.drucken ja was, das irgendwie blockiert?
Re: QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 21:00
von init-0
Nein, da wird nur etwas in eine Datei geschrieben.
Ausserdem habe ich das Problem manchmal schon am Anfang, bevor ich den Button gedrückt habe. Ausserdem reagiert ja nicht nur der Button nicht.
Re: QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 21:04
von BlackJack
@init-0: Dann machst Du irgend etwas falsch. Und zwar wahrscheinlich in dem Quelltext ausserhalb der drei Zeilen, die Du gezeigt hast.
Re: QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 21:08
von init-0
Anscheinend hat es etwas mit dem move befehl zu tun.
Ich habe den Code jetzt in
Code: Alles auswählen
self.button = QtGui.QPushButton("drucken", self)
self.button.setGeometry(QtCore.QRect(420,390,200,25))
self.button.clicked.connect(self.drucken)
geändert und der button hat keine Probleme mehr.
Allerdings besteht das Problem bei diesem Aufruf fort:
Code: Alles auswählen
self.vereinbarungsBeginn = QtGui.QDateEdit(self)
self.vereinbarungsBeginn.setGeometry(QtCore.QRect(175,360,100,20))
Re: QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 21:19
von BlackJack
@init-0: Kann es ein, dass Da irgendwelche anderen Elemente „vor” die Elemente platziert werden, so dass nicht die Schaltfläche, sondern ein anderes Widget die Klicks empfängt?
Letztlich ist sowieso die Frage warum Du `move()` oder `setGeometry()` verwendest, anstelle eines Layouts, wie man das eigentlich machen sollte.
Re: QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 21:37
von init-0
Jaa vielen Dank! Das ist die Lösung. Ich hatte vergessen dass ich ein Label viel zu lang gezogen hatte, weil ich nicht wusste wie lang es sein musste.
Danke!
Re: QPushButton reagiert nicht
Verfasst: Samstag 21. Januar 2012, 21:47
von BlackJack
@init-0: Ein Label muss so lang wie sein Inhalt sein. Und das sollte man dem GUI-Toolkit überlassen das heraus zu finden und sowohl die Grösse des Labels, als auch die dadurch resultierende relative Position der anderen GUI-Elemente fest zu legen. Absolutes platzieren von GUI-Elementen ist eine schlechte Idee — das macht man heutzutage nicht mehr. Dazu ist die Vielfalt von Hardware, Software, und Einstellungen einfach zu gross.