Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 20, 2009 08:00:55

kaw
От:
Зарегистрирован: 2009-02-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться!!!

Есть QListWidget в нем рисую меню, но никак не удаеться с сигналом передать в функцию параметр self.CopyToo('dbf') выкидывает ошибку
The debugged program raised the exception unhandled TypeError “argument 3 of QObject.connect() has an invalid type”

            dmenu = self.menu.addMenu(u'Копировать в')
self.connect (dmenu.addAction(u'Эл.Накладные') , SIGNAL('triggered()'), self.CopyToo('dbf'))
self.menu.exec_(QCursor.pos())

@pyqtSignature("QString")
def CopyToo(self, name):
s = self.listWidget.item(self.a).text()
if name =='dbf':
i=0
if name == 'def':
i=1
if name == 'msg':
i=2
if self.listWidget.item(i).text() != 'noting':
sql = "UPDATE %s SET adres = '%s' where nom = %s" % (name,s,self.Fd_Edit_Nm.text())
else:
sql = "INSERT INTO %s(nom, adres) VALUES ('%s', '%s')" % (name,self.Fd_Edit_Nm.text(),s)
try:
self.cur.execute(sql)
self.con.commit()
except:
self.msg.question(self, 'Message', u'Ошибка записи! " %s' % (sql))
self.on_Fd_Button_Fd_clicked() /code



Офлайн

#2 Фев. 20, 2009 08:33:38

kaw
От:
Зарегистрирован: 2009-02-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться!!!

пока решил проблему так

        dmenu = self.menu.addMenu(u'Копировать в')
self.connect (dmenu.addAction(u'Эл.Накладные') , SIGNAL('triggered()'), self.dbf)
self.menu.exec_(QCursor.pos())

def dbf (self):
self.CopyToo('dbf')



Отредактировано (Фев. 20, 2009 08:34:09)

Офлайн

#3 Фев. 21, 2009 22:20:51

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться!!!

Вы кажется что-то путаете в терминологии. Соединять надо сигнал (действие, событие) к слоту (слот, функция). Тут всё происходит асинхронно.

Так может и надо решать, хотя решать тут нечего. Есть ещё вариант использовать лямбду:
self.connect (dmenu.addAction(u'Эл.Накладные') , SIGNAL('triggered()'), lambda: self.CopyToo('dbf'))
- но это не так очевидно как хотелось бы…

Вы же ничего не соединяете, а ошибочно пытаетесь результат функции передать в качестве слота:
self.connect (dmenu.addAction(u'Эл.Накладные') , SIGNAL('triggered()'), self.CopyToo('dbf'))



Офлайн

#4 Фев. 22, 2009 02:47:33

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Помогите разобраться!!!

И название темы никудышное.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version