Не могу закрыть текущие окно
При нажатие на кнопку должно закрыться окно, но не выходит.
Способ делал исходя из интернета.
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class Start(object):
def setupUi(self, MainWindow):
...
...
...
def retranslateUi(self, MainWindow):
...
...
...
self.pushButton_2.setText(_translate("MainWindow", "Далее"))
self.pushButton_2.clicked.connect(self.next)
def next(self, MainWindow): # кнопка далее
from MAIN import Main
mw = Main()
self.close() # должно закрыть текущие окно
mw.show()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Start()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
При нажатие на кнопку пишет, что Start(), не имеет атрибут close / hide.
Traceback (most recent call last):
File "C:\Users\Stepan\Desktop\WoVBOT\StartUp.py", line 163, in next
self.close()
AttributeError: 'Start' object has no attribute 'close'
Поток 'MainThread' (0x1) завершился с кодом 0 (0x0).
QObject::~QObject: Timers cannot be stopped from another thread
Программа "python.exe" завершилась с кодом -1 (0xffffffff).
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Не изменяйте код, сгенерированный Qt Designer. Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.
Start- это не виджет. аobject.Пожалуйста, предоставьте минимально-воспроизводимый пример.
попробуйте так:
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from MAIN import Main # +++
class Start(object):
def setupUi(self, MainWindow):
...
...
...
def retranslateUi(self, MainWindow):
...
...
...
self.pushButton_2.setText(_translate("MainWindow", "Далее"))
# self.pushButton_2.clicked.connect(self.next)
#def next(self, MainWindow): # кнопка далее
# from MAIN import Main
# mw = Main()
# self.close() # должно закрыть текущие окно
# mw.show()
class MainWindow(QtWidgets.QMainWindow, Start):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton_2.clicked.connect(self.next)
def next(self):
self.mw = Main() # !!! self
self.mw.show()
self.close()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
# MainWindow = QtWidgets.QMainWindow()
# ui = Start()
# ui.setupUi(MainWindow)
w = MainWindow()
w.show()
sys.exit(app.exec_())