I have bilingual application. In QtDesigner I made two interfaces: gui_eng.ui and gui_rus.ui. For each of them exist main_gui_eng.py and main_gui_rus.py files with configuration code of those .ui files. What is more, there exists main.py file (from which is started main_gui_eng.py or main_gui_rus.py according to last time closed). main.py will be converted to .exe file. In each file I use following way to connect with .ui:
main_window = uic.loadUiType('gui_eng.ui')[0]
class WIZWindow(QMainWindow, main_window):
Problem: How could I connect them this way? If I write in main.py:
import main_gui_eng
it does not open needed .ui file...
1 pyuic5 gui_eng.ui -o gui_eng.py
2 pyuic5 gui_rus.ui -o gui_rus.py
3 python main_eng_rus.py
4 pyinstaller -c -F main_eng_rus.py
5 main_eng_rus.exe
main_gui_eng.py
from PyQt5.QtWidgets import QMainWindow, QApplication
# pyuic5 gui_eng.ui -o gui_eng.py
from gui_eng import Ui_MainWindow
class Window(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.parent = parent
self.setupUi(self)
def closeEvent(self, event):
self.hide()
self.parent.show()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = Window()
w.setWindowTitle("main_gui_eng.py")
w.show()
sys.exit(app.exec_())
main_gui_rus.py
from PyQt5.QtWidgets import QMainWindow, QApplication
# pyuic5 gui_rus.ui -o gui_rus.py
from gui_rus import Ui_MainWindow
class Window(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.parent = parent
self.setupUi(self)
def closeEvent(self, event):
self.hide()
self.parent.show()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = Window()
w.setWindowTitle("main_gui_rus.py")
w.show()
sys.exit(app.exec_())
main_eng_rus.py
from PyQt5.QtWidgets import (QMainWindow, QApplication, QPushButton,
QWidget, QGridLayout)
from main_gui_eng import Window as gui_eng
from main_gui_rus import Window as gui_rus
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
centralWidget = QWidget()
self.setCentralWidget(centralWidget)
self.button_eng = QPushButton('Open main_gui_eng.py')
self.button_eng.clicked.connect(self.open_gui_eng)
self.button_rus = QPushButton('Open main_gui_rus.py')
self.button_rus.clicked.connect(self.open_gui_rus)
self.grid = QGridLayout(centralWidget)
self.grid.addWidget(self.button_eng, 0, 0)
self.grid.addWidget(self.button_rus, 0, 1)
def open_gui_eng(self):
self.mainGuiEng = gui_eng(self)
self.mainGuiEng.show()
self.hide()
def open_gui_rus(self):
self.mainGuiRus = gui_rus(self)
self.mainGuiRus.show()
self.hide()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = MainWindow()
w.setWindowTitle("main_eng_rus.py")
w.show()
sys.exit(app.exec_())