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.