Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Не удаётся вызвать функцию при работе с дочерним окном. [RSS Feed]

#1 Июнь 21, 2012 09:06:03

modos189
Зарегистрирован: 2012-05-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

нет, аргумент не нужен, просто хотел сделать как в вашем коде потому что если из
def control_backup(self, QModelIndex):
убрать
QModelIndex

то вместо открытия окна ошибки

TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type ‘PyQt4.QtCore.pyqtWrapperType’
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 4 has unexpected type ‘str’
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type ‘str’

Отредактировано modos189 (Июнь 21, 2012 09:10:26)

Офлайн

#2 Июнь 21, 2012 10:48:33

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

modos189
TypeError: arguments did not match any overloaded call:
Где это появляется?

Кстати, откуда вы нашли у QAction сигнал activated? Попробуйте triggered (у всех экшнов):
self.action_2.triggered.connect(self.control_backup)

Отредактировано reclosedev (Июнь 21, 2012 10:48:55)

Офлайн

#3 Июнь 21, 2012 12:56:06

modos189
Зарегистрирован: 2012-05-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

reclosedev
Кстати, откуда вы нашли у QAction сигнал activated? Попробуйте triggered (у всех экшнов):
из QtDesigner triggered там не нашел, но так похоже тоже работает.

А полный лог ошибки вот:
Traceback (most recent call last):
File “…путь…/MPM.py”, line 106, in control_backup
self.second_window = ControlBackup()
File “…путь…/MPM.py”, line 298, in __init__
QtCore.SLOT(“close()”))
TypeError: arguments did not match any overloaded call:
QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 3 has unexpected type ‘PyQt4.QtCore.pyqtWrapperType’
QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 4 has unexpected type ‘str’
QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type ‘str’

Офлайн

#4 Июнь 21, 2012 12:57:04

modos189
Зарегистрирован: 2012-05-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

это появляется при открытии нового окна из

def control_backup(self):
self.second_window = ControlBackup()
second_window.show()

Отредактировано modos189 (Июнь 21, 2012 12:57:29)

Офлайн

#5 Июнь 21, 2012 13:32:04

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

Неправильно соединяется сигнал.

 QtCore.QObject.connect(self.pushButton,
            QtCore.SIGNAL("clicked()"), ControlBackup,
            QtCore.SLOT("close()"))
ControlBackup - это не объект, а класс. Нужно соединять с экземпляром, т.е. с self:
 QtCore.QObject.connect(self.pushButton,
            QtCore.SIGNAL("clicked()"), self,
            QtCore.SLOT("close()"))

Но если вы используете новый стиль соединения в главном окне, лучше использовать его везде:
self.pushButton.clicked.connect(self.close)
И читается намного лучше.

Офлайн

#6 Июнь 21, 2012 13:55:37

modos189
Зарегистрирован: 2012-05-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

спасибо

Офлайн

#7 Июнь 21, 2012 14:46:38

modos189
Зарегистрирован: 2012-05-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

а если переместить интерфейс в отдельную папку то как его импортировать?

пробовал перед импортом написать
sys.path.insert(0, “ui”)
и
sys.path.insert(0, “./ui”)

но чтото не импортируется

Отредактировано modos189 (Июнь 21, 2012 14:47:13)

Офлайн

#8 Июнь 21, 2012 17:37:32

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

Почитайте: http://docs.python.org/tutorial/modules.html (да и учебник целиком неплохо бы)

Нужно чтобы ui стал пакетом (package), т.е. добавить пустой файл __init__.py

ui
__init__.py
control_backup.py
...

тогда можно импортировать так:
from ui.control_backup import Ui_ControlBackup

Офлайн

#9 Июнь 21, 2012 21:54:33

modos189
Зарегистрирован: 2012-05-19
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не удаётся вызвать функцию при работе с дочерним окном.

понял.

ну именно тот учебник не смогу, а

http://wiki.python.su/Документации/ВведениеВСредуPyQt4

почитаю

Отредактировано modos189 (Июнь 21, 2012 21:56:40)

Офлайн

  • Начало
  • » GUI
  • » Не удаётся вызвать функцию при работе с дочерним окном.[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version