Уведомления

Группа в Telegram: @pythonsu

#1 Июль 19, 2014 14:41:48

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 наследование

Пишу скрипт состоящий из нескольких форм, одна из которых форма подключения к серверу.
Вызывается из главной формы и после ввода верных параметров подключения закрывается и на основной форме должны отобразиться результаты. Делаю так:

def connected_to_server():
      ...
      return result
...
class MainWindow(QMainWindow, object):
      def __init__(self, parent=None):
            QMainWindow.__init__(self, parent)
            self.ui = Ui_MainWindow()
            self.ui.setupUi(self)
            self.cw = ConnectWindow()
            ...
            self.model = QStandardItemModel()
            ...
     def create_actions(self):
           self.show_cw_action = QAction(self.tr('&Connection window'), self, statusTip='Connection Window')
           self.show_cw_action.triggered.connect(self.show_cw)
     ...
    def show_cw(self):
           self.cw.show()
    ...
    def ou_populate(self):
           if SERVER_STATUS != 0:
                 for i in range(len(connected_to_server())):
                       self.model.setItem(i,0,QStandardItem(QIcon('icons/folder-orange.svg'), connected_to_server()[i]))
           else:
                 pass
...
class ConnectWindow(MainWindow):
      def __init__(self, parent=None):
            QMainWindow.__init__(self, parent)
            self.ui_cw = Ui_ConnectWindow()
            self.ui_cw.setupUi(self)
     ...
     def connected(self)
     ...
     MainWindow.ou_populate()
     ...

Выдает ошибку:
MainWindow.ou_populate()
TypeError: unbound method ou_populate() must be called with MainWindow instance as first argument (got nothing instead)

Подскажите пожалуйста куда копать.

Отредактировано vladimirse (Июль 19, 2014 14:42:11)

Офлайн

#2 Июль 19, 2014 21:20:17

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

PyQT4 наследование

Замените строку

MainWindow.ou_populate()
на
MainWindow().ou_populate()
.
Обращаясь к классу не забывайте ставить скобки.

Офлайн

#3 Июль 21, 2014 10:32:36

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 наследование

Большое спасибо!

Офлайн

#4 Июль 21, 2014 11:43:37

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

PyQT4 наследование

vladimirse
Большое спасибо!
За “Большое спасибо” репутацию не повысишь

Офлайн

#5 Июль 22, 2014 15:08:25

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 наследование

А не подскажете, можно ли как то изменить переменную объявленную в конструкторе класса из другова класса, что то типа:

class MainWindow():
      def __init__(self):
            self.count = 0
      ...
class OtherWindow():
      def __init__(self):
      ...
      def metod_click(self):
            MainWindow().count = 5
...

Офлайн

#6 Июль 22, 2014 15:08:48

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 наследование

Razor
За “Большое спасибо” репутацию не повысишь
Нет проблем )))

Офлайн

#7 Июль 22, 2014 17:17:04

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

PyQT4 наследование

vladimirse
можно ли как то изменить переменную объявленную в конструкторе класса из другова класса

Почитайте про объектно-ориентированное программирование на Python, а в частности, про наследование. Это работает по другому.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version