J'apprends la programmation GUI en utilisant python et pyqt4 et c'est l'application que je travaille pour apprendre Signal et Slots. Ceci est une application simple qui a un spinbox et une boîte de dialogue qui se connectent ensemble en utilisant des signaux pyqt. mais j'ai ajouté un zerospinbox de classe, il est supposé imprimer le massage à la console chaque fois que la valeur de spinbox ou boîte de dialogue devient zéro et compte le nombre d'occurrence de lui en utilisant un signal, QObject.Emit(). Je suivi livre tutoriel pour écrire et quoi que je fasse il ne montre pas le massage.So si vous pouvez s'il vous plaît jeter un oeil au code et me dire où je me trompe:PyQt4 Signal et QObject.Emit()
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
dial = QDial()
dial.setNotchesVisible(True)
spinbox = QSpinBox()
layout = QHBoxLayout()
layout.addWidget(dial)
layout.addWidget(spinbox)
zerospinbox = ZeroSpinBox()
self.setLayout(layout)
self.connect(dial, SIGNAL("valueChanged(int)"),
spinbox,SLOT("setValue(int)"))
self.connect(spinbox, SIGNAL("ValueChanged(int)"),
dial,SLOT("setValue(int)"))
self.setWindowTitle("Signal and Slots")
zerospinbox = ZeroSpinBox()
self.connect(zerospinbox, SIGNAL("atzero"),self.announce)
def announce(self,zeros):
print("ZeroSpinBox has been at zero %d times" % zeros)
class ZeroSpinBox(QSpinBox):
zeros=0
def __init__(self, parent=None):
super(ZeroSpinBox, self).__init__(parent)
self.connect(self, SIGNAL("valueChanged(int)"), self.checkzero)
def checkzero(self):
if self.value()==0:
self.zeros +=1
self.emit(SIGNAL("atzero"),self.zeros)
app =QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
grâce
merci. le livre que je lis pour apprendre la programmation de gui avec pyqt4 est démodé je pense. Connaissez-vous un livre ou un tutoriel qui peut être utilisé pour apprendre pyqt4 ou pyqt5? –
@kouroshdaryaee. Le [PyQt Wiki] (http://wiki.python.org/moin/PyQt) contient des liens utiles, mais ils ne sont pas tous à jour. – ekhumoro