私はPythonとpyqt4 を使用してGUIプログラミングを学習しており、これは私がシグナルとスロットを学ぶために取り組んでいるアプリケーションです。 これはスピンボックスとpyqtシグナルを使って接続されたダイアログボックスを持つシンプルなアプリケーションです。クラスzerospinboxを追加しました。スピンボックスやダイアログボックスの値が0になるたびにコンソールにメッセージを出力し、QObject.Emit()シグナルを使ってその発生数を数えます。 は、私はそれを書くためのチュートリアル本を続き、何でも私はあなたのコードを見て、私は間違っているところを教えてくださいすることができた場合、それはmassage.Soが表示されない操作を行います。PyQt4シグナルと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_()
おかげ
ありがとうございました。私はpyqt4とGUIプログラミングを学ぶために読んでいる本は古くなっていると思います。あなたはpyqt4やpyqt5を学ぶのに使うことができる本やチュートリアルを知っていますか? @kouroshdaryaee。 –
[PyQt Wiki](http://wiki.python.org/moin/PyQt)には便利なリンクがいくつかありますが、最新ではありません。 – ekhumoro