Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2016 09:40:14

Dlod
Зарегистрирован: 2014-01-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не закрывается окно

Всем привет! Прошу не ругать не так давно начал изучать python и qt.
есть два окна сделанные в qtdesiner сначала вызываю одно окно из него требуется вызвать второе окно. при закрытии второго окна через кнопку отмена должно открыться первое, оно открывается но при этом остается висеть пустая форма от второго окна. как победить эту форму?

import sys
import mainForm, regSub
from PyQt5 import QtCore, QtGui, QtWidgets
class startWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = mainForm.Ui_MainWindow()
        self.ui.setupUi(self)
        self.regSubButton = regWin()
        self.ui.pushButton.clicked.connect(self.regSubButtonEvent)
    def closeEvent(self, e):
        result = QtWidgets.QMessageBox.question(self,"Confirm Dialog", "Вы действительно хотите выйти?",
                                                QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
                                                QtWidgets.QMessageBox.No)
        if result == QtWidgets.QMessageBox.Yes:
            e.accept()
        else:
            e.ignore()
    def regSubButtonEvent(self):
        self.setCentralWidget(self.regSubButton)
        self.resize(400,250)
class regWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui2 = regSub.Ui_MainWindow()
        self.ui2.setupUi(self)
        self.ui2.pushButton_2.clicked.connect(self.hide)
    def regCancelButtonEvent(self):
        self.regCancelButton = startWin()
        self.regCancelButton.show()
    def closeEvent(self, e):
        result = QtWidgets.QMessageBox.question(self,"Confirm Dialog", "Вы действительно хотите выйти?",
                                                QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
                                                QtWidgets.QMessageBox.No)
        if result == QtWidgets.QMessageBox.Yes:
            e.accept()
        else:
            e.ignore()
def main():
    app = QtWidgets.QApplication(sys.argv)
    startapp = startWin()
    startapp.show()
    sys.exit(app.exec_())
if __name__ == "__main__":
    main()

Отредактировано Dlod (Март 6, 2016 09:40:58)

Офлайн

#2 Март 6, 2016 11:08:02

Dlod
Зарегистрирован: 2014-01-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не закрывается окно

Разобрался с окном которое не закрывалось. Но во теперь не могу понять почему не меняется размер этого окна когда дергаю resize

import sys
import mainForm, regSub
from PyQt5 import QtCore, QtGui, QtWidgets
class startWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui = mainForm.Ui_MainWindow()
        self.ui.setupUi(self)
        self.regSubButton = regWin()
        self.ui.pushButton.clicked.connect(self.regSubButtonEvent)
    def closeEvent(self, e):
        result = QtWidgets.QMessageBox.question(self,"Confirm Dialog", "Вы действительно хотите выйти?",
                                                QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
                                                QtWidgets.QMessageBox.No)
        if result == QtWidgets.QMessageBox.Yes:
            e.accept()
        else:
            e.ignore()
    def regSubButtonEvent(self):
        self.setCentralWidget(self.regSubButton)
        self.resize(400,250)
class regWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.ui2 = regSub.Ui_MainWindow()
        self.ui2.setupUi(self)
        self.ui2.pushButton_2.clicked.connect(self.regCancelButtonEvent)
        self.ui2.pushButton.clicked.connect(self.regAddSub)
    def regCancelButtonEvent(self):
        self.regCancelButton = startWin()
        self.setCentralWidget(self.regCancelButton)
        self.resize(400, 400)
    def regAddSub(self):
        QtWidgets.QMessageBox.question(self,"Confirm Dialog", "Абонент добавлен",
                                                QtWidgets.QMessageBox.Yes)
        self.regCancelButton = startWin()
        self.setCentralWidget(self.regCancelButton)
        self.resize(400,450)
    def closeEvent(self, e):
        result = QtWidgets.QMessageBox.question(self,"Confirm Dialog", "Вы действительно хотите выйти?",
                                                QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
                                                QtWidgets.QMessageBox.No)
        if result == QtWidgets.QMessageBox.Yes:
            e.accept()
        else:
            e.ignore()
def main():
    app = QtWidgets.QApplication(sys.argv)
    startapp = startWin()
    startapp.show()
    sys.exit(app.exec_())
if __name__ == "__main__":
    main()

Офлайн

#3 Март 6, 2016 14:00:51

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

Не закрывается окно

1) QMainWindow должен быть только 1, для диалогов используй QDialog и никогда для создания окон не используй QWidget
2) Нельзя каждый раз переустанавливать виджеты! self.setCentralWidget должен вызываться только 1 раз из конструктора.
3) Функция main лишняя.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version