Я пытаюсь создать приложение CRUD, в котором оно имеет несколько windows. Список клиентов, регистрация клиентов, удаление клиентов, редактирование клиентов. Для этого я пытаюсь переключиться из окна в другое окно, проблема в том, что при переключении окна значок на панели задач исчезает. Я должен делать это неправильно. Я привык к веб-приложениям, это мое первое настольное приложение.
Значок панели задач:
![enter image description here](https://i.stack.imgur.com/KZLes.png)
Псевдокод:
Я пробовал QStackedWidget, но настройка страниц из индекса не выглядит хорошо, когда у вас много страниц.
Я обновил свой вопрос с помощью QMainWindow, я не использовал QWindow, потому что он не поддерживает setLayout, например.
import sys
import time
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QMainWindow, QDialog, QApplication, QDesktopWidget, QGridLayout, QLabel, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.title = 'Main Window'
self.top = 100
self.left = 100
self.width = 350
self.height = 200
self.InitUI()
self.show()
def InitUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.top, self.left, self.width, self.height)
qtRectangle = self.frameGeometry()
centerPoint = QDesktopWidget().availableGeometry().center()
qtRectangle.moveCenter(centerPoint)
self.move(qtRectangle.topLeft())
layout = QGridLayout()
label1 = QLabel('First Screen - Please wait...')
label1.setFont(QFont("Times", 25, QFont.Bold))
layout.addWidget(label1, 0, 0, Qt.AlignCenter)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
QTimer.singleShot(5000, self.goToSecondScreen)
def goToSecondScreen(self):
w = SecondWindow(parent=self)
w.show()
self.hide()
class SecondWindow(QMainWindow):
def __init__(self, parent):
super().__init__(parent=parent)
self.title = 'Second Window'
self.top = 100
self.left = 100
self.width = 680
self.height = 500
self.InitUI()
self.show()
def InitUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.top, self.left, self.width, self.height)
qtRectangle = self.frameGeometry()
centerPoint = QDesktopWidget().availableGeometry().center()
qtRectangle.moveCenter(centerPoint)
self.move(qtRectangle.topLeft())
layout = QGridLayout()
label1 = QLabel('Second Screen - Please wait...')
label1.setFont(QFont("Times", 25, QFont.Bold))
layout.addWidget(label1, 0, 0, Qt.AlignCenter)
self.setLayout(layout)
QTimer.singleShot(5000, self.goToThirdWindow)
def goToThirdWindow(self):
w = ThirdWindow(parent=self)
w.show()
self.hide()
class ThirdWindow(QMainWindow):
def __init__(self, parent):
super().__init__(parent=parent)
self.title = 'Third Window'
self.top = 100
self.left = 100
self.width = 680
self.height = 500
self.InitUI()
self.show()
def InitUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.top, self.left, self.width, self.height)
qtRectangle = self.frameGeometry()
centerPoint = QDesktopWidget().availableGeometry().center()
qtRectangle.moveCenter(centerPoint)
self.move(qtRectangle.topLeft())
layout = QGridLayout()
label1 = QLabel('ThirdWindow Screen')
label1.setFont(QFont("Times", 25, QFont.Bold))
layout.addWidget(label1, 0, 0, Qt.AlignCenter)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MainWindow()
sys.exit(app.exec_())