Как отрыть форму MainMenu по нажатию на кнопку

У меня есть 2 окна программы MainMenu.py (стартовое окно) и QueryСonstructor.py (окно которое открывается по нажатию).
Интерфейс реализован через Qt Desinger. Оба файла реализованы как форма MainWindow.

На данном этапе получилось реализовать открытие формы, но она потеряла весь свой функционал...

Так же хотелось уточнить, есть ли возможность при нажатии на пустое место где предусмотрен label_2 в файле QueryСonstructor.py открывался проводник и можно было выбрать фото для дальнейшей работы.

MainMenu.py:

import sys
import pytesseract
import win32api, time
import numpy as np                 
import cv2         

from urllib.request import urlopen
from PIL import Image, ImageGrab

from PyQt5.QtWidgets import (QApplication, QDialog, QMainWindow, QMessageBox)
from PyQt5.uic import loadUi
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *


from ui_MainMenu import Ui_MainWindow
from ui_QueryСonstructor import Ui_QuaryConstructor


class Window(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.btnClicked)
#-------------------------------------------------------------
    def btnClicked(self):
        self.setupUi(self)
        self.ui2 = Ui_QuaryConstructor()
        self.ui2.setupUi(self)
#-------------------------------------------------------------
if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(app.exec_())

ui_MainMenu.py:

from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(431, 433)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.verticalLayoutWidget = QWidget(self.centralwidget)
        self.verticalLayoutWidget.setObjectName(u"verticalLayoutWidget")
        self.verticalLayoutWidget.setGeometry(QRect(130, 280, 160, 80))
        self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setObjectName(u"verticalLayout")
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.pushButton = QPushButton(self.verticalLayoutWidget)
        self.pushButton.setObjectName(u"pushButton")

        self.verticalLayout.addWidget(self.pushButton)

        self.pushButton_2 = QPushButton(self.verticalLayoutWidget)
        self.pushButton_2.setObjectName(u"pushButton_2")

        self.verticalLayout.addWidget(self.pushButton_2)

        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
    # setupUi

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"\u041e\u041e\u041e \"\u0422\u041a\u0420\" - \u041f\u0440\u043e\u0432\u0435\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432", None))
        self.pushButton.setText(QCoreApplication.translate("MainWindow", u"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432", None))
        self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432", None))
    # retranslateUi

QueryСonstructor.py:

import sys
import pytesseract
import win32api, time
import numpy as np                 
import cv2         

from urllib.request import urlopen
from PIL import Image, ImageGrab

from PyQt5.QtWidgets import (QApplication, QDialog, QMainWindow, QMessageBox)
from PyQt5.uic import loadUi
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *


from ui_QueryСonstructor import Ui_QuaryConstructor

class QuaryConstructor(QMainWindow, Ui_QuaryConstructor):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.ui2 = Ui_QuaryConstructor()
        self.ui2.setupUi(self)

        mainMenu = self.menuBar()
        instmenu = mainMenu.addMenu("Инстументы")
        file = mainMenu.addMenu("Файл")
        videlenie = QAction("Выделить для копирования", self)
        instmenu.addAction(videlenie)                        
        videlenie.triggered.connect(self.screenshot)         
        photo = QAction("Вставить фото", self)
        file.addAction(photo)
        photo.triggered.connect(self.getImage)

        self.image_foreground = QImage(self.size(), QImage.Format_ARGB32_Premultiplied)
        self.image_foreground.fill(Qt.transparent)
        self.image_background = QImage(self.size(), QImage.Format_ARGB32_Premultiplied)
        self.image_background.fill(Qt.white)

        self.instrument = 'screenshot'

        self.selection = QRubberBand(QRubberBand.Rectangle, self) 
        self.start = QPointF() 
        self.end = QPointF()   

        self.ui2.pushButton.clicked.connect(self.btnClicked)
        self.ui2.pushButton_2.clicked.connect(self.btnClicked2)
    

    def getImage(self):
        filename, _ = QFileDialog.getOpenFileName(
            self, 
            "Выберите изображение", 
            "",
            "PNG(*.png);;JPEG(*.jpg *.jpeg);;All Files(*.*)"
        )
        if not filename:
            return
        self.ui2.label_2.setPixmap(QPixmap(u"{}".format(filename)))
        self.selection.hide()  


    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawImage(self.rect(), self.image_background, self.image_background.rect())
        painter.drawImage(self.image_foreground.rect(), self.image_foreground)

    def mousePressEvent(self, event):
        if event.buttons() == Qt.LeftButton and self.instrument == 'screenshot': 
            self.start = event.pos() 
            self._start = event.globalPos()

    def mouseMoveEvent(self, event):
        if event.buttons() == Qt.LeftButton and self.instrument == 'screenshot': 
            self.end = event.pos()
            self.selection.setGeometry(QRect(self.start, self.end).normalized())
            self.selection.show()

    def mouseReleaseEvent(self, event):
        if self.instrument == 'screenshot':  
            self._end = event.globalPos()
            self.selection.hide()
            QTimer.singleShot(20, self.newLabel)

    def newLabel(self):
        self.selection.hide()
        self.instrument = 'None'
        img = ImageGrab.grab(bbox=(
            self._start.x(), 
            self._start.y(), 
            self._end.x(), 
            self._end.y()
        ))
        
        pathImage = '4.png'
        img.save(pathImage)
        img = cv2.cvtColor(np.array(img), cv2.COLOR_BGR2RGB)
        cv2.waitKey(0)
        cv2.destroyAllWindows()        
    
    def screenshot(self):        
        self.instrument = 'screenshot' 
        
    def resizeEvent(self, event):   
        self.image_foreground = QImage(self.size(), QImage.Format_ARGB32_Premultiplied)
        self.image_foreground.fill(Qt.transparent)
        self.update()
        super().resizeEvent(event)

        

    def btnClicked(self):
        self.ui2.label.setText("Дата на документе: " + text)
        self.ui2.label.adjustSize()

    def btnClicked2(self):
        self.instrument = 'screenshot'
        image = Image.open('4.png')
        pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
        text2 = pytesseract.image_to_string(image, lang='rus+eng')
        self.ui2.label.setText(text2)
        self.ui2.label.adjustSize()

image = Image.open('4.jpg')
cropped = image.crop((0, 200, 250, 270))
cropped.save('cropped_jelly.png')
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
text = pytesseract.image_to_string(cropped, lang='rus+eng')

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = QuaryConstructor()
    win.show()
    sys.exit(app.exec_())

ui_QueryСonstructor.py:

from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *


class Ui_QuaryConstructor(object):
    def setupUi(self, QuaryConstructor):
        if not QuaryConstructor.objectName():
            QuaryConstructor.setObjectName(u"QuaryConstructor")
        QuaryConstructor.resize(972, 682)
        self.action = QAction(QuaryConstructor)
        self.action.setObjectName(u"action")
        self.action_2 = QAction(QuaryConstructor)
        self.action_2.setObjectName(u"action_2")
        self.centralwidget = QWidget(QuaryConstructor)
        self.centralwidget.setObjectName(u"centralwidget")
        self.label_2 = QLabel(self.centralwidget)
        self.label_2.setObjectName(u"label_2")
        self.label_2.setGeometry(QRect(10, 10, 561, 661))
        self.label_2.setTextFormat(Qt.MarkdownText)
        self.label_2.setScaledContents(True)
        self.label_2.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter)
        self.label_2.setMargin(-3)
        self.label_2.setOpenExternalLinks(False)
        self.label = QLabel(self.centralwidget)
        self.label.setObjectName(u"label")
        self.label.setGeometry(QRect(600, 60, 361, 211))
        self.label.setScaledContents(True)
        self.gridLayoutWidget_2 = QWidget(self.centralwidget)
        self.gridLayoutWidget_2.setObjectName(u"gridLayoutWidget_2")
        self.gridLayoutWidget_2.setGeometry(QRect(610, 570, 321, 86))
        self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2)
        self.gridLayout_2.setObjectName(u"gridLayout_2")
        self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
        self.label_3 = QLabel(self.gridLayoutWidget_2)
        self.label_3.setObjectName(u"label_3")
        self.label_3.setScaledContents(True)

        self.gridLayout_2.addWidget(self.label_3, 0, 1, 1, 1)

        self.label_4 = QLabel(self.gridLayoutWidget_2)
        self.label_4.setObjectName(u"label_4")
        self.label_4.setScaledContents(True)

        self.gridLayout_2.addWidget(self.label_4, 1, 1, 1, 1)

        self.pushButton_3 = QPushButton(self.gridLayoutWidget_2)
        self.pushButton_3.setObjectName(u"pushButton_3")

        self.gridLayout_2.addWidget(self.pushButton_3, 0, 0, 1, 1)

        self.pushButton_4 = QPushButton(self.gridLayoutWidget_2)
        self.pushButton_4.setObjectName(u"pushButton_4")

        self.gridLayout_2.addWidget(self.pushButton_4, 1, 0, 1, 1)

        self.pushButton_5 = QPushButton(self.gridLayoutWidget_2)
        self.pushButton_5.setObjectName(u"pushButton_5")

        self.gridLayout_2.addWidget(self.pushButton_5, 2, 0, 1, 1)

        self.label_5 = QLabel(self.gridLayoutWidget_2)
        self.label_5.setObjectName(u"label_5")
        self.label_5.setScaledContents(True)

        self.gridLayout_2.addWidget(self.label_5, 2, 1, 1, 1)

        self.horizontalLayoutWidget = QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setObjectName(u"horizontalLayoutWidget")
        self.horizontalLayoutWidget.setGeometry(QRect(650, 260, 250, 80))
        self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setObjectName(u"horizontalLayout")
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.pushButton_2 = QPushButton(self.horizontalLayoutWidget)
        self.pushButton_2.setObjectName(u"pushButton_2")

        self.horizontalLayout.addWidget(self.pushButton_2)

        self.pushButton = QPushButton(self.horizontalLayoutWidget)
        self.pushButton.setObjectName(u"pushButton")

        self.horizontalLayout.addWidget(self.pushButton)

        QuaryConstructor.setCentralWidget(self.centralwidget)

        self.retranslateUi(QuaryConstructor)

        QMetaObject.connectSlotsByName(QuaryConstructor)
    # setupUi

    def retranslateUi(self, QuaryConstructor):
        QuaryConstructor.setWindowTitle(QCoreApplication.translate("QuaryConstructor", u"\u041e\u041e\u041e \"\u0422\u041a\u0420\" - \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0448\u0430\u0431\u043b\u043e\u043d\u0430", None))
        self.action.setText(QCoreApplication.translate("QuaryConstructor", u"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0444\u043e\u0442\u043e", None))
        self.action_2.setText(QCoreApplication.translate("QuaryConstructor", u"\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f", None))
        self.label_2.setText("")
        self.label.setText("")
        self.label_3.setText("")
        self.label_4.setText("")
        self.pushButton_3.setText(QCoreApplication.translate("QuaryConstructor", u"\u0422\u0438\u043f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", None))
        self.pushButton_4.setText(QCoreApplication.translate("QuaryConstructor", u"\u0414\u0430\u0442\u0430", None))
        self.pushButton_5.setText(QCoreApplication.translate("QuaryConstructor", u"\u0424\u0418\u041e", None))
        self.label_5.setText("")
        self.pushButton_2.setText(QCoreApplication.translate("QuaryConstructor", u"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u043b\u0430\u0441\u0442\u044c(\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u043c)", None))
        self.pushButton.setText(QCoreApplication.translate("QuaryConstructor", u"\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c", None))
    # retranslateUi

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

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

Попробуйте так

from PyQt5.Qt import *
from QueryСonstructor import QuaryConstructor
...


...
class Window(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.btnClicked)

    def btnClicked(self):
#        self.setupUi(self)
#        self.ui2 = Ui_QuaryConstructor()
#        self.ui2.setupUi(self)
        self.quaryConstructor = QuaryConstructor()           # +++
        self.quaryConstructor.show()                         # +++


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = Window()
    win.show()
    sys.exit(app.exec_())

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

→ Ссылка