Некорректно работает переход на новое окно в PyQt5
Есть окно_1
и окно_2
. Пользователь может перейти из окно_1
в окно_2
и наоборот, нажав на кнопку.
Проблема в том, что если перейти в окно_2
, а затем вернуться в окно_1
и попробовать снова перейти в окно_2
, выдаст такую ошибку:
NameError: name 'SecondWin' is not defined
Пример кода окон:
window1.py
from window2 import *
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout
class FirstWin(QWidget):
def __init__(self):
super().__init__()
self.UI()
self.UX()
self.connections()
def UI(self):
self.setFixedSize(500, 300)
self.move(400, 300)
def UX(self):
self.next_button = QPushButton('Следующее окно')
self.line = QHBoxLayout()
self.line.addWidget(self.next_button, alignment=Qt.AlignCenter)
self.setLayout(self.line)
def connections(self):
self.next_button.clicked.connect(self.next)
def next(self):
self.hide()
self.w2 = SecondWin()
self.w2.show()
if __name__ == '__main__':
app = QApplication([])
w1 = FirstWin()
w1.show()
app.exec_()
window2.py
from window1 import *
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout, QPushButton, QHBoxLayout
class SecondWin(QWidget):
def __init__(self):
super().__init__()
self.UI()
self.UX()
self.connections()
def UI(self):
self.setFixedSize(500, 300)
self.move(400, 300)
def UX(self):
self.next_button = QPushButton('Назад')
self.line = QHBoxLayout()
self.line.addWidget(self.next_button, alignment=Qt.AlignCenter)
self.setLayout(self.line)
def connections(self):
self.next_button.clicked.connect(self.next)
def next(self):
self.hide()
self.w1 = FirstWin()
self.w1.show()
Источник: Stack Overflow на русском