Вернуться из 2-го окна в 1-е (разные файлы)

Создается приложение с большим количеством разных окон. Суть в том, что я пытаюсь из главного окна попасть (нажатием кнопки) в окно клиентов. В окне клиентов есть кнопка Back, которая должна возвращать пользователя в главное окно.

Оба кода в разных файлах. Проблема возникает на этапе нажатия кнопки

#Customers# (Process finished with exit code -1073740791 (0xC0000409)).

Помогите понять, что не так.

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

Welcome_Screen.py

import sys
from PyQt5.uic import loadUi
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import QDialog, QApplication
import Customers
 
 
class WelcomeScreen(QDialog):
    def __init__(self):
        super(WelcomeScreen, self).__init__()
        loadUi('screens/welcomescreen.ui', self)
        self.CustomerData.clicked.connect(self.go_to_CustomerData)
 
    def go_to_CustomerData(self):
        client = Customers.CustomerScreen()
        widget.addWidget(client)
        widget.setCurrentIndex(widget.currentIndex() + 1)
 
# main
app = QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon('Icons/MainIcon.png'))
app.setApplicationDisplayName('Bonus Program')
welcome = WelcomeScreen()
widget = QtWidgets.QStackedWidget()
widget.addWidget(welcome)
widget.setFixedWidth(600)
widget.setFixedHeight(475)
widget.show()
 
try:
    sys.exit(app.exec_())
except:
    print("Exiting")

Customers.py

import sys
from PyQt5.uic import loadUi
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QDialog, QApplication, QWidget, QMessageBox, QTableWidget, QTableWidgetItem, QTableView
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel, QSqlQuery
from PyQt5.QtGui import QIcon
 
import Welcome_Screen as ws
 
import sqlite3
 
db_path = 'Bonus_db.sqlite'
 
class CustomerScreen(QDialog):
    def __init__(self):
        super(CustomerScreen, self).__init__()
        loadUi("screens/customerscreen.ui", self)
 
        self.back_btn.setIcon(QIcon('Icons/Back.png'))
        self.back_btn.setIconSize(QtCore.QSize(45, 60))
        self.back_btn.clicked.connect(self.go_Back_to_WelcomeScreen)
 
        # self.SoldTos.clicked.connect(self.gotoSoldTos)
 
    def go_Back_to_WelcomeScreen(self):
        welcome = ws.WelcomeScreen()
        ws.widget.addWidget(welcome)
        ws.widget.setCurrentIndex(ws.widget.currentIndex() + 1)
 
Customer_app = QApplication(sys.argv)
cust_window = CustomerScreen()
cust_window.show()
sys.exit(Customer_app.exec_())


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

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

Вы не предоставили минимально-воспроизводимый пример, который демонстрирует проблему. Модули .ui также входят в минимально-воспроизводимый пример.

Чтобы получить реальную ошибку и понять что не так, вам надо запускать приложение в CMD/консоли/терминале.

Я попробовал сделать ваше приложение рабочим.

Welcome_Screen.py

import sys
from PyQt5.uic import loadUi
from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import QDialog, QApplication

#import Customers
from Customers import CustomerScreen               # !!!
 
class WelcomeScreen(QDialog):
    def __init__(self):
        super(WelcomeScreen, self).__init__()
        
# ???        loadUi('screens/welcomescreen.ui', self)
        
        self.CustomerData = QtWidgets.QPushButton("CustomerData", self)   # +++
        self.CustomerData.clicked.connect(self.go_to_CustomerData)
 
    def go_to_CustomerData(self):
#        client = Customers.CustomerScreen()
        client = CustomerScreen(widget)                                   # +++ (widget)
        widget.addWidget(client)
        widget.setCurrentIndex(widget.currentIndex() + 1)
 
# main
if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('im.png'))
    app.setApplicationDisplayName('Bonus Program')
    welcome = WelcomeScreen()
    widget = QtWidgets.QStackedWidget()
    widget.addWidget(welcome)
    widget.setFixedWidth(600)
    widget.setFixedHeight(475)
    widget.show()
     
    try:
        sys.exit(app.exec_())
    except:
        print("Exiting")

Customers.py

import sys
from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel, QSqlQuery
from PyQt5.uic import loadUi
from PyQt5.Qt import *
 
# ??? import Welcome_Screen as ws
#import sqlite3
# 
#db_path = 'Bonus_db.sqlite'

 
class CustomerScreen(QDialog):
    def __init__(self, widget):                                           # +++ widget
        super(CustomerScreen, self).__init__()
# ???         loadUi("screens/customerscreen.ui", self)

        self.widget = widget                                              # +++ 
 
        self.back_btn = QtWidgets.QPushButton("back_btn", self)           # +
        self.back_btn.setIcon(QIcon('im.png'))
        self.back_btn.setIconSize(QtCore.QSize(45, 60))
        self.back_btn.clicked.connect(self.go_Back_to_WelcomeScreen)
 
    def go_Back_to_WelcomeScreen(self):
        self.widget.setCurrentIndex(0)                                     # +++ 
        '''
        welcome = ws.WelcomeScreen()
        ws.widget.addWidget(welcome)
        ws.widget.setCurrentIndex(ws.widget.currentIndex() + 1)
        '''

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

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

→ Ссылка