Найти - Пользователи
Полная версия: Не удаётся вызвать функцию при работе с дочерним окном.
Начало » GUI » Не удаётся вызвать функцию при работе с дочерним окном.
1 2
modos189
нет, аргумент не нужен, просто хотел сделать как в вашем коде потому что если из
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’
reclosedev
modos189
TypeError: arguments did not match any overloaded call:
Где это появляется?

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

modos189
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’
modos189
это появляется при открытии нового окна из

def control_backup(self):
self.second_window = ControlBackup()
second_window.show()
reclosedev
Неправильно соединяется сигнал.
 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)
И читается намного лучше.
modos189
спасибо
modos189
а если переместить интерфейс в отдельную папку то как его импортировать?

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

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

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

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

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

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

почитаю
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB