Помогите с наследованием...

ajkpro

Новичок
Пользователь
Сен 5, 2021
13
0
1
Вероятно, я не правильно построил структуру программы, но всё-равно интересно - почему так?
Есть прога из 3-х файлов: собственно экранная форма, основной файл (класс MainApp) и некий дополнительный модуль (класс Docx2array).
Из них выбито всё лишнее. Смысл таков: есть форма с двумя кнопками и текстовым полем. Сразу видна правая кнопка, которая при нажатии должна провести некоторое действие и включить левую кнопку. Это переключение кнопок происходит в дополнительном модуле. Возможно, это всё логически делается не так, но...

В дополнительном модуле не видно ничего из других программ и собственно вся часть проги в доп.модуле не работает.
Когда я смотрю отладчик, то даже self = false

1. Экранная форма из QT Creator - mainwindow.py
Python:
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(251, 271)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.jobsField = QtWidgets.QTextEdit(self.centralwidget)
        self.jobsField.setGeometry(QtCore.QRect(30, 50, 191, 171))
        self.jobsField.setMinimumSize(QtCore.QSize(100, 100))
        self.jobsField.setObjectName("jobsField")
        self.pB_Start = QtWidgets.QPushButton(self.centralwidget)
        self.pB_Start.setGeometry(QtCore.QRect(140, 10, 85, 26))
        self.pB_Start.setMinimumSize(QtCore.QSize(0, 0))
        self.pB_Start.setObjectName("pB_Start")
        self.pB_Load = QtWidgets.QPushButton(self.centralwidget)
        self.pB_Load.setGeometry(QtCore.QRect(30, 10, 85, 26))
        self.pB_Load.setObjectName("pB_Load")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 251, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        QtCore.QMetaObject.connectSlotsByName(MainWindow)
2. Основной файл - test1.py
Код:
from PyQt6 import QtWidgets, QtGui

from PyQt6.QtWidgets import QApplication

import mainwindow
from test2 import Docx2array

class MainApp(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
    name_test = "*.docx"
    path_images = "media"

    def __init__(self):
        super().__init__()
        self.setupUi(self)

        self.jobsField.setHtml('Test<br>\n')
        self.jobsField.setReadOnly(True)

        self.pB_Load.clicked.connect(self.browse_test)
        self.pB_Load.setText("Load")

        self.pB_Start.setText("Start")
        self.pB_Start.clicked.connect(Docx2array.beginStep)

    def browse_test(self):
        d2a.loadData()


if __name__ == "__main__":
    global window
    app = QApplication([])  # sys.argv
    window = MainApp()      # Создаём объект класса MainApp
    window.show()           # Показываем окно
    d2a = Docx2array()      # не уверен, что это здесь
    app.exec()              # и запускаем приложение
    sys.exit()
3. Отдельный модуль - test2.py
Код:
from PyQt6 import QtWidgets, QtGui
import mainwindow

class Docx2array(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):

    def __init__(self):
        super().__init__()
        self.setupUi(self)

    def loadData(self):
        self.jobsField.setHtml('Pressed Load<br>\n')
        self.pB_Load.setVisible(True)
        self.pB_Start.setVisible(False)
  
    def beginStep(self):
        global window
        window.jobsField.setHtml('Pressed Start<br>\n')
        self.pB_Load.setVisible(False)
        self.pB_Start.setVisible(True)
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
что бы в Docx2array были доступны методы из MainApp, он должен наследоваться от MainApp
 

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