#!/usr/bin/python import MySQLdb import sys from PyQt4 import QtCore,QtGui db = MySQLdb.connect(host="localhost", user="root", passwd="xxx", db="dev", charset='utf8') class GridLayout(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) def slotSaveNumber(num=0): sql="INSERT INTO numbers SET number =('"+str(num)+"')" cursor = db.cursor() cursor.execute(sql) self.setWindowTitle('test') names = ['1', '2', '3'] grid = QtGui.QGridLayout() j = 0 pos = [(0,0),(0,1),(0,2)] for i in names: button = QtGui.QPushButton(i) grid.addWidget(button, pos[j][0], pos[j][1]) #self.connect(button,QtCore.SIGNAL("clicked()"),app,slotSaveNumber(2)) self.connect(button,QtCore.SIGNAL("clicked()"),app,slotSaveNumber) j = j + 1 self.setLayout(grid) app = QtGui.QApplication(sys.argv) qb = GridLayout() qb.show() sys.exit(app.exec_())
Подскажите в чем проблема ? Если вызываю слот без аргумента, то все ОК .
self.connect(button,QtCore.SIGNAL(“clicked()”),app,slotSaveNumber)
А если так
#self.connect(button,QtCore.SIGNAL(“clicked()”),app,slotSaveNumber(2))
То ошибка :
self.connect(button,QtCore.SIGNAL(“clicked()”),self,slotSaveNumber(2))
TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 4 has unexpected type ‘NoneType’
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type ‘GridLayout’
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type ‘GridLayout’