Почему программа не реагирует на класс MainWindow

Хочу отделить работы с файлами на экземпляры суперклассов, но программа почему-то не реагирует на класс MainWindow. То-есть, если я хочу например поменять заголовок программы в классе MainWindow, то ничего не происходит. Почему?

Код cripto.py

import sys
from PyQt5 import QtCore, QtGui, QtWidgets    
from PyQt5.QtGui import QColor, QIcon 
from PyQt5.uic import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from test import Ui_MainWindow




class Cpriptohelper(QtWidgets.QMainWindow, Ui_MainWindow):                          # + Ui_MainWindow
    def __init__(self, parent=None):
        super(Cpriptohelper, self).__init__(parent) 
        self.setupUi(self)
        self.setWindowTitle('CriptoHelper')
        
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)
        #Начало класса CriptoHelper
        self.criptohelper = Cpriptohelper(self) #экземпляр класса

        self.criptohelper.inputC.setPlaceholderText("Из")



if __name__ == "__main__":     
    app = QtWidgets.QApplication(sys.argv)
    w = Cpriptohelper()   
    #w.setFixedSize(435, 625)                                  
    w.show()            
    sys.exit(app.exec_())

код test.ui

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(400, 600)
        MainWindow.setMinimumSize(QtCore.QSize(400, 600))
        MainWindow.setMaximumSize(QtCore.QSize(400, 600))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setMinimumSize(QtCore.QSize(400, 600))
        self.centralwidget.setMaximumSize(QtCore.QSize(400, 600))
        self.centralwidget.setStyleSheet("background-color: rgb(23, 24, 18);")
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(0, 0, 400, 600))
        self.frame.setMinimumSize(QtCore.QSize(400, 600))
        self.frame.setMaximumSize(QtCore.QSize(400, 600))
        self.frame.setStyleSheet("background-color: rgb(27, 29, 39);")
        self.frame.setObjectName("frame")
        self.frame_2 = QtWidgets.QFrame(self.frame)
        self.frame_2.setGeometry(QtCore.QRect(0, 0, 401, 181))
        self.frame_2.setStyleSheet("background-color: rgb(207, 207, 207);")
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.label = QtWidgets.QLabel(self.frame_2)
        self.label.setGeometry(QtCore.QRect(150, 40, 101, 91))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap("images/btc.png"))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.inputC = QtWidgets.QLineEdit(self.frame)
        self.inputC.setGeometry(QtCore.QRect(30, 260, 341, 61))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.inputC.setFont(font)
        self.inputC.setAutoFillBackground(False)
        self.inputC.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #f39219;\n"
"border-radius: 30;\n"
"color: white;\n"
"")
        self.inputC.setText("")
        self.inputC.setAlignment(QtCore.Qt.AlignCenter)
        self.inputC.setObjectName("inputC")
        self.outputP = QtWidgets.QLineEdit(self.frame)
        self.outputP.setGeometry(QtCore.QRect(30, 350, 341, 61))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.outputP.setFont(font)
        self.outputP.setAutoFillBackground(False)
        self.outputP.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #f39219;\n"
"border-radius: 30;\n"
"color: white;\n"
"")
        self.outputP.setText("")
        self.outputP.setAlignment(QtCore.Qt.AlignCenter)
        self.outputP.setObjectName("outputP")
        self.price = QtWidgets.QPushButton(self.frame)
        self.price.setGeometry(QtCore.QRect(60, 470, 281, 61))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.price.setFont(font)
        self.price.setStyleSheet("QPushButton{\n"
"    color: ;\n"
"    background-color: rgb(0, 0, 0);\n"
"    background-color: #a7a7a7;\n"
"    border-radius: 30;\n"
"}\n"
"QPushButton: pressed{\n"
"    background-color: #d1d1d1;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    color: #b3b3b3;\n"
" }")
        self.price.setObjectName("price")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.price.setText(_translate("MainWindow", "Узнать цену"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

Ответы (1 шт):

Автор решения: S. Nick

Я не уверен что правильно понял вашу задачу.
Чтобы класс MainWindow() как-то проявил себя, надо как минимум

  • создать его экземпляр и
  • показать его.

w = MainWindow()
w.show() 

main.py

import sys
from PyQt5 import QtCore, QtGui, QtWidgets    
from PyQt5.Qt import *

from q1425933_test import Ui_MainWindow


class Cpriptohelper(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(Cpriptohelper, self).__init__(parent) 
        self.setupUi(self)
        self.setWindowTitle('CriptoHelper')

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
        self.parent = parent
        self.price.clicked.connect(self.goMainWindow)

    def goMainWindow(self):
        self.parent.label.setText("Вы узнали цену?")
        self.parent.show() 
        self.hide()        
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('MainWindow')                                      # +++
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
        self.label = QLabel('Это MainWindow', self, alignment = Qt.AlignCenter)
        self.label.setStyleSheet('background-color: #105652; font-size: 30px;')
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.label.setSizePolicy(sizePolicy)
     
        self.pushButton = QPushButton("Показать CriptoHelper")
        self.pushButton.clicked.connect(self.goCriptoHelper)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        #Начало класса CriptoHelper
        self.criptohelper = Cpriptohelper(self)              # экземпляр класса
        self.criptohelper.inputC.setPlaceholderText("Из ???")
       
# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv        
        self.mainLayout = QVBoxLayout(self.centralWidget)                  
        self.mainLayout.addWidget(self.label)
        self.mainLayout.addWidget(self.pushButton)

        super().layout().activate()                                      
        self.mainLayout.activate()                                                 

    def resizeEvent(self, event):
        super().resizeEvent(event)
        
    def goCriptoHelper(self):
        self.criptohelper.outputP.setFocus()
        self.criptohelper.show() 
        self.hide()
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    

if __name__ == "__main__":     
    app = QtWidgets.QApplication(sys.argv)

#    w = Cpriptohelper()  
    w = MainWindow()                                                  # !!! +++
    
    #w.setFixedSize(435, 625) 
    w.resize(400, 300)    
    w.show()            
    sys.exit(app.exec_())

q1425933_test.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(400, 600)
        MainWindow.setMinimumSize(QtCore.QSize(400, 600))
        MainWindow.setMaximumSize(QtCore.QSize(400, 600))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setMinimumSize(QtCore.QSize(400, 600))
        self.centralwidget.setMaximumSize(QtCore.QSize(400, 600))
        self.centralwidget.setStyleSheet("background-color: rgb(23, 24, 18);")
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(0, 0, 400, 600))
        self.frame.setMinimumSize(QtCore.QSize(400, 600))
        self.frame.setMaximumSize(QtCore.QSize(400, 600))
        self.frame.setStyleSheet("background-color: rgb(27, 29, 39);")
        self.frame.setObjectName("frame")
        self.frame_2 = QtWidgets.QFrame(self.frame)
        self.frame_2.setGeometry(QtCore.QRect(0, 0, 401, 181))
        self.frame_2.setStyleSheet("background-color: rgb(207, 207, 207);")
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.label = QtWidgets.QLabel(self.frame_2)
        self.label.setGeometry(QtCore.QRect(150, 40, 101, 91))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap("images/btc.png"))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.inputC = QtWidgets.QLineEdit(self.frame)
        self.inputC.setGeometry(QtCore.QRect(30, 260, 341, 61))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.inputC.setFont(font)
        self.inputC.setAutoFillBackground(False)
        self.inputC.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #f39219;\n"
"border-radius: 30;\n"
"color: white;\n"
"")
        self.inputC.setText("")
        self.inputC.setAlignment(QtCore.Qt.AlignCenter)
        self.inputC.setObjectName("inputC")
        self.outputP = QtWidgets.QLineEdit(self.frame)
        self.outputP.setGeometry(QtCore.QRect(30, 350, 341, 61))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.outputP.setFont(font)
        self.outputP.setAutoFillBackground(False)
        self.outputP.setStyleSheet("background-color: #22222e;\n"
"border: 2px solid #f39219;\n"
"border-radius: 30;\n"
"color: white;\n"
"")
        self.outputP.setText("")
        self.outputP.setAlignment(QtCore.Qt.AlignCenter)
        self.outputP.setObjectName("outputP")
        self.price = QtWidgets.QPushButton(self.frame)
        self.price.setGeometry(QtCore.QRect(60, 470, 281, 61))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.price.setFont(font)
        self.price.setStyleSheet("QPushButton{\n"
"    color: ;\n"
"    background-color: rgb(0, 0, 0);\n"
"    background-color: #a7a7a7;\n"
"    border-radius: 30;\n"
"}\n"
"QPushButton: pressed{\n"
"    background-color: #d1d1d1;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    color: #b3b3b3;\n"
" }")
        self.price.setObjectName("price")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.price.setText(_translate("MainWindow", "Узнать цену"))

введите сюда описание изображения

введите сюда описание изображения

→ Ссылка