繁体   English   中英

更改窗口时图标从任务栏中消失

[英]Icon disappears from taskbar when changing window

我正在尝试创建一个具有多个窗口的 CRUD 应用程序。 列出客户、注册客户、删除客户、编辑客户。 为此,我试图从窗口切换到另一个窗口,问题是当我切换窗口时,任务栏中的图标消失了。 我一定是做错了。 我习惯了 Web 应用程序,这是我的第一个桌面应用程序。

任务栏图标:

在此处输入图片说明

伪代码:

我试过 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_())

由于我已经测试了您的代码,我看到无法找到任务栏,因为您正在创建 QDialog 实例,而不是窗口,请尝试创建窗口实例而不是 QDialog 实例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM