Помогите с классами и методами

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Я тут урезал сколько смог.
Есть три класса:
class Ui_MainWindow(object): # окошки из QtCreator
class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow): # Управление всем
class Docx2array: # класс для расчетов всяких

Нажимаем на кнопочку, она вызывает метод из того последнего класса и выпадает ошибка:
Код:
Traceback (most recent call last):
  File "mytest0.py", line 50, in beginStep
    self.pushButton_bgn.setVisible(True)
AttributeError: 'bool' object has no attribute 'pushButton_bgn'

То же самое будет, если там буде какая-либо команда (self.cntStep = 1), только ругаться будет на её.
Что-то я в классообразовании не понимаю?

Код:
import sys

from PyQt6.QtGui import QAction, QIcon
from PyQt6 import QtWidgets, QtGui
from PyQt6.QtWidgets import (
    QApplication,
    QFileDialog,
    QMessageBox
)
from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(200, 60)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.split_Button = QtWidgets.QSplitter(self.centralwidget)
        self.split_Button.setOrientation(QtCore.Qt.Orientation.Horizontal)
        self.split_Button.setObjectName("split_Button")
        self.pushButton_bgn = QtWidgets.QPushButton(self.split_Button)
        self.pushButton_bgn.setObjectName("pushButton_bgn")


class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):

    def __init__(self):
        super().__init__()
        self.setupUi(self)  # Это нужно для инициализации нашего дизайна

        self.pushButton_bgn.setVisible(True)
        self.pushButton_bgn.clicked.connect(Docx2array.beginStep)
        self.pushButton_bgn.setText("Начать")


class Docx2array:

    def __init__(self):
        self.cntStep = 0


    def beginStep(self):
        self.pushButton_bgn.setVisible(True)
        self.pushButton_bgn.clicked.connect(Docx2array.nextStep)
        self.pushButton_bgn.setText("Дальше")

        self.cntStep = 1


if __name__ == "__main__":
    app = QApplication([])  # sys.argv
    window = ExampleApp()   # Создаём объект класса ExampleApp
    window.show()           # Показываем окно
    app.exec()              # и запускаем приложение
    sys.exit()

С уважением, Александр.

Спасибо!
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
Docx2array не знает что такое pushButton_bgn, для него он не определен
плюс вы вызываете метод beginStep, но экземпляр класса Docx2array у вас тоже нет, это тоже будет ошибка
 
Последнее редактирование:

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Наверное, дело в экземпляре класса, но я не придумаю, где его вставить.

Такой вариант дает ту же ошибку.
Код:
class Docx2array:
    def __init__(self):
        self.cntStep = 0

    def beginStep(self):
        self.cntStep = 1

С уважением, Александр.
Спасибо!
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
Наверное, дело в экземпляре класса, но я не придумаю, где его вставить.

Такой вариант дает ту же ошибку.
Код:
class Docx2array:
    def __init__(self):
        self.cntStep = 0

    def beginStep(self):
        self.cntStep = 1

С уважением, Александр.
Спасибо!
можно так, у меня нет qt6, поэтому сделал в qt5, импорты поменяйте на свои
Python:
import sys

from PyQt5.QtGui import QIcon
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import (
    QApplication,
    QFileDialog,
    QMessageBox
)
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(200, 60)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.split_Button = QtWidgets.QSplitter(self.centralwidget)
        self.split_Button.setOrientation(QtCore.Qt.Orientation.Horizontal)
        self.split_Button.setObjectName("split_Button")
        self.pushButton_bgn = QtWidgets.QPushButton(self.split_Button)
        self.pushButton_bgn.setObjectName("pushButton_bgn")


class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):

    def __init__(self):
        super().__init__()
        self.setupUi(self)  # Это нужно для инициализации нашего дизайна
        d2a = Docx2array()

        self.pushButton_bgn.setVisible(True)
        self.pushButton_bgn.clicked.connect(lambda: d2a.beginStep())
        self.pushButton_bgn.setText("Начать")


class Docx2array:

    def __init__(self):
        self.cntStep = 0

    def beginStep(self):
        # self.pushButton_bgn.setVisible(True)
        # self.pushButton_bgn.clicked.connect(Docx2array.nextStep)
        # self.pushButton_bgn.setText("Дальше")

        self.cntStep = 1
        print(self.cntStep)


if __name__ == "__main__":
    app = QApplication([])  # sys.argv
    window = ExampleApp()   # Создаём объект класса ExampleApp
    window.show()           # Показываем окно
    app.exec()              # и запускаем приложение
    sys.exit()
 

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Спасибо!

Но это какое-то шаманство...

С уважением, Александр.
 

Форум IT Специалистов