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

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)

Подскажите пожалуйста куда копать.
Razor
Замените строку
MainWindow.ou_populate()
на
MainWindow().ou_populate()
.
Обращаясь к классу не забывайте ставить скобки.
vladimirse
Большое спасибо!
Razor
vladimirse
Большое спасибо!
За “Большое спасибо” репутацию не повысишь
vladimirse
А не подскажете, можно ли как то изменить переменную объявленную в конструкторе класса из другова класса, что то типа:

class MainWindow():
      def __init__(self):
            self.count = 0
      ...
class OtherWindow():
      def __init__(self):
      ...
      def metod_click(self):
            MainWindow().count = 5
...
vladimirse
Razor
За “Большое спасибо” репутацию не повысишь
Нет проблем )))
Razor
vladimirse
можно ли как то изменить переменную объявленную в конструкторе класса из другова класса

Почитайте про объектно-ориентированное программирование на Python, а в частности, про наследование. Это работает по другому.
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