0
我是Python和Qt的新手。目前,我正在嘗試爲更大的應用程序構建用戶界面,但我遇到了有關信號和插槽的問題。pyQt5:無法連接QSpinBox :: valueChanged(int)
這裏是我的代碼:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QObject, pyqtSlot
import sys
class Ui_configDialog(QtWidgets.QDialog):
def __init__(self):
super(Ui_configDialog, self).__init__()
self.setupUi()
def setupUi(self):
self.setObjectName("configDialog")
self.setWindowModality(QtCore.Qt.WindowModal)
self.resize(425, 380)
row1 = DataRow(self)
self.show()
class DataRow:
def __init__(self, dialog):
rect = QtCore.QRect(10, 40, 91, 30)
self.text_fRep = QtWidgets.QSpinBox(dialog)
self.text_fRep.setGeometry(rect.translated(100, 0))
self.connect_signal()
@pyqtSlot(int)
def fRep_changed(self, value):
print(value)
def connect_signal(self):
self.text_fRep.valueChanged.connect(self.fRep_changed)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
dialog = Ui_configDialog()
sys.exit(app.exec_())
我所試圖實現的是,每當QSpinBox對象的值被改變槽fRep_changed被調用。但有了這個代碼,我收到一個編譯錯誤:
QObject::connect: Cannot connect QSpinBox::valueChanged(int) to (null)::fRep_changed(int)
TypeError: connect() failed between valueChanged(int) and fRep_changed()
我看不到,爲什麼我不應該能夠將信號連接到插槽。
我也刪除了@pyqtSlot(int)。應用程序啓動,但值改變時沒有任何反應。
非常感謝您的幫助!