0

I have a 2 classes 1. Main_window another is Load_file_window. When I Press a Load_file option in my Mainwindow, it should open Load_file_window and browse the file and send the file name to my main windows both are 2 different classes. I'm able to browse the file from Load_file_window but when I tried to pass that value to Mainwindow its not happening. How can I proceed with this?

This code will run in windows machine, with Python PyQt5 Module

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QInputDialog,QFileDialog,QMessageBox,QWidget)

class Ui_Load_FILE(QWidget):
    def _init__(self,parent=None):
        super().__init__()
        self.parent=parent
        self.Loaded_File_data=[]
    def setupUi(self, Load_FILE):
        Load_FILE.setObjectName("Load_FILE")
        Load_FILE.resize(581, 89)
        self.Load_group_box = QtWidgets.QGroupBox(Load_FILE)
        self.Load_group_box.setGeometry(QtCore.QRect(10, 0, 561, 81))
        self.Load_group_box.setTitle("")
        self.Load_group_box.setObjectName("groupBox")
        self.Load_progressBar = QtWidgets.QProgressBar(self.Load_group_box)
        self.Load_progressBar.setGeometry(QtCore.QRect(10, 50, 471, 16))
        self.Load_progressBar.setProperty("value", 0)
        self.Load_progressBar.setObjectName("progressBar")
        self.Import_button = QtWidgets.QPushButton(self.Load_group_box)
        self.Import_button.setGeometry(QtCore.QRect(480, 10, 75, 23))
        self.Import_button.setObjectName("Import_button")
        self.File_Name= self.Import_button.clicked.connect (self.openFileNameDialog)
        #self.pushButton.clicked.connect()
        self.Input_textBox = QtWidgets.QLineEdit(self.Load_group_box)
        self.Input_textBox.setGeometry(QtCore.QRect(60, 10, 411, 31))
        self.Input_textBox.setObjectName("Input_textBox")        
        self.Input_txtbx_lbl = QtWidgets.QLabel(self.Load_group_box)
        self.Input_txtbx_lbl.setGeometry(QtCore.QRect(10, 20, 47, 13))
        self.Input_txtbx_lbl.setObjectName("Input_txtbx_lbl")
        self.Load_button = QtWidgets.QPushButton(self.Load_group_box)
        self.Load_button.setGeometry(QtCore.QRect(480, 50, 75, 23))
        self.Load_button.setObjectName("Load_button")
        self.File1=self.Load_button.clicked.connect(self.Load_Action)
        self.retranslateUi(Load_FILE)
        QtCore.QMetaObject.connectSlotsByName(Load_FILE)
        return self.File1
    def retranslateUi(self, Load_FILE):
        _translate = QtCore.QCoreApplication.translate
        Load_FILE.setWindowTitle(_translate("Load_FILE", "Load File"))
        self.Import_button.setText(_translate("Load_FILE", "Import"))
        self.Input_txtbx_lbl.setText(_translate("Load_FILE", "Load_File"))
        self.Load_button.setText(_translate("Load_FILE", "Load"))

    def openFileNameDialog(self):
        '''Opens Files diralog to browse the data'''
        fileName=QFileDialog.getOpenFileName(caption='Open file',directory='.',filter="FILE Files (*.std *.FILE);;All Files (*.*)")
        if fileName[0]!='':
            self.Input_textBox.setText(fileName[0])
        else:            
            msg='Please select a File'
            self.Messagebox(msg,'info','Please select a File')
        return fileName
    def Load_Action(self,Load_FILE):        
        self.File_Name=self.Input_textBox.text()        
        if self.File_Name:
            print(self.File_Name)
            return self.File_Name
        else:
            self.Messagebox('Please browse a file then try to load the file','info','Please select a file before you load')

    def Messagebox(self,msg_text,msgtype='info',title='Message Box'):
        ''' Message is a function to call the message box in PyQt Quickly.  msgtype can be (info, warn,que,criti).
            msg_text is the msg you want to display, Title will be window Title'''
        if msgtype=='info':
            reply=QMessageBox.information(self,title,msg_text,QMessageBox.Ok ,QMessageBox.Ok)
        elif msgtype=='warn':
            reply=QMessageBox.warning(self,title,msg_text,QMessageBox.Ok ,QMessageBox.Ok)
        elif msgtype=='que':
            reply=QMessageBox.question(self,title,msg_text,QMessageBox.Yes | QMessageBox.No ,QMessageBox.Yes)
        elif msgtype=='criti':
            reply=QMessageBox.critical(self,title,msg_text,QMessageBox.Ok | QMessageBox.Cancel ,QMessageBox.Ok)
        return reply

## THIS IS MY LOAD_FILE_WINDOW CODE

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

# Form implementation generated from reading ui file 'Tool_Main_Frame.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QInputDialog,QFileDialog,QMessageBox,QWidget,QMainWindow,QDialog)
from Load_FILE import Ui_Load_FILE

class Ui_MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1390, 914)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1390, 21))
        self.menubar.setObjectName("menubar")
        self.File = QtWidgets.QMenu(self.menubar)
        self.File.setObjectName("File")
        self.Menu = QtWidgets.QMenu(self.menubar)
        self.Menu.setObjectName("Menu")
        self.View = QtWidgets.QMenu(self.menubar)
        self.View.setObjectName("View")
        self.Data = QtWidgets.QMenu(self.menubar)
        self.Data.setObjectName("Data")
        #self.Data.setShortcut('Alt+D')
        self.Export = QtWidgets.QMenu(self.Data)
        self.Export.setObjectName("Export")
        self.Import = QtWidgets.QMenu(self.Data)
        self.Import.setObjectName("Import")
        #self.Import.setShortcut('Ctrl+I')
        self.Help = QtWidgets.QMenu(self.menubar)
        self.Help.setObjectName("Help")
        self.Editmenu=QtWidgets.QMenu(self.menubar)
        self.Editmenu.setObjectName("Edit")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.Load = QtWidgets.QAction(MainWindow)
        self.Load.setObjectName("Load")
        self.Save = QtWidgets.QAction(MainWindow)
        self.Save.setObjectName("Save")
        self.Save.setShortcut("Ctrl+S")
        self.Save_As = QtWidgets.QAction(MainWindow)
        self.Save_As.setObjectName("Save_As")
        self.Save_As.setShortcut("Ctrl+Shift+S")
        self.Exit = QtWidgets.QAction(MainWindow)
        self.Exit.setObjectName("Exit")
        self.Exit.setShortcut("Ctrl+Q")
        self.Exit.triggered.connect(self.Exit_the_main_window)
        self.Open = QtWidgets.QAction(MainWindow)
        self.Open.setObjectName("Open")
        self.Open.setShortcut("Ctrl+O")
        self.Load_CSV = QtWidgets.QAction(MainWindow)
        self.Load_CSV.setObjectName("Load_CSV")
        self.Export_Excel = QtWidgets.QAction(MainWindow)
        self.Export_Excel.setObjectName("Export_Excel")
        self.Export_CSV = QtWidgets.QAction(MainWindow)
        self.Export_CSV.setObjectName("Export_CSV")
        self.Export_TXT = QtWidgets.QAction(MainWindow)
        self.Export_TXT.setObjectName("Export_TXT")
        self.Load_FILE = QtWidgets.QAction(MainWindow)
        self.Load_FILE.setObjectName("Load_FILE")

        k=self.Load_FILE.triggered.connect(self.Open_Load_Action)
        self.Load_FILE.setShortcut('Ctrl+L')
        self.Load_Excel = QtWidgets.QAction(MainWindow)
        self.Load_Excel.setObjectName("Load_Excel")
        self.Load_Txt = QtWidgets.QAction(MainWindow)
        self.Load_Txt.setObjectName("Load_Txt")
        self.File.addAction(self.Open)
        self.File.addAction(self.Save)
        self.File.addAction(self.Save_As)
        self.File.addAction(self.Exit)
        self.Export.addAction(self.Export_Excel)
        self.Export.addAction(self.Export_CSV)
        self.Export.addAction(self.Export_TXT)
        self.Import.addAction(self.Load_FILE)
        self.Import.addAction(self.Load_Excel)
        self.Import.addAction(self.Load_Txt)
        self.Data.addAction(self.Import.menuAction())
        self.Data.addAction(self.Export.menuAction())
        self.Help.addSeparator()
        self.menubar.addAction(self.File.menuAction())
        self.menubar.addAction(self.Menu.menuAction())
        self.menubar.addAction(self.Editmenu.menuAction())
        self.menubar.addAction(self.View.menuAction())
        self.menubar.addAction(self.Data.menuAction())
        self.menubar.addAction(self.Help.menuAction())
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "TOOL_TOOL"))
        self.File.setTitle(_translate("MainWindow", "File"))
        self.Menu.setTitle(_translate("MainWindow", "Menu"))
        self.View.setTitle(_translate("MainWindow", "View"))
        self.Data.setTitle(_translate("MainWindow", "Data"))
        self.Export.setTitle(_translate("MainWindow", "Export"))
        self.Import.setTitle(_translate("MainWindow", "Import"))
        self.Help.setTitle(_translate("MainWindow", "Help"))
        self.Editmenu.setTitle(_translate('MainWindow','Edit'))
        self.Save.setText(_translate("MainWindow", "Save"))
        self.Save_As.setText(_translate("MainWindow", "Save As.."))
        self.Exit.setText(_translate("MainWindow", "Exit"))
        self.Open.setText(_translate("MainWindow", "Open"))        
        self.Load_CSV.setText(_translate("MainWindow", "Load_CSV"))
        self.Export_Excel.setText(_translate("MainWindow", "Export_Excel"))
        self.Export_CSV.setText(_translate("MainWindow", "Export_CSV"))
        self.Export_TXT.setText(_translate("MainWindow", "Export_TXT"))
        self.Load_FILE.setText(_translate("MainWindow", "Load_FILE"))
        self.Load_Excel.setText(_translate("MainWindow", "Load_Excel"))
        self.Load_Txt.setText(_translate("MainWindow", "Load_Txt"))

    def Open_Load_Action(self):

        self.Load_FILE = QDialog()
        self.Load_FILE_ui = Ui_Load_FILE()
        self.Load_FILE_ui.setupUi(self.Load_FILE)
        self.Load_FILE.show()
        self.Load_FILE.exec_()  #<<----- After this all my code is not working as I wanted 

    def Exit_the_main_window(self):
        sys.exit(Main_Application.exec_())


def Launch_app():

    import sys
    Main_Application = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    First_time_loading=True
    ui_Main_Window = Ui_MainWindow()
    ui_Main_Window.setupUi(MainWindow)
    MainWindow.show()
    if First_time_loading==True:
        First_time_loading=False
        sys.exit(Main_Application.exec_())

Launch_app()

This is my Main File

I'm expecting the file selected in load file to come into my main windows but its not happening and the windows also not getting closed.

  • 1
    Please, create a minimal example, instead of posting your whole file. See [How to create a Minimal, Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) – zvone Aug 29 '19 at 06:40
  • 1
    Take a look at https://stackoverflow.com/questions/5760622/pyqt4-create-a-custom-dialog-that-returns-parameters – Yaroslav Kornachevskyi Aug 29 '19 at 06:46

0 Answers0