首页 > 解决方案 > 为主程序创建一个新的单独窗口

问题描述

所以,我正在尝试为我的应用创建启动画面;闪屏是一个QMainWindow,主程序也是QMainWindow。问题是当我隐藏启动屏幕并显示主程序时,它没有自己的单独窗口,可以像其他 Windows 程序一样最小化和处理。我怎样才能做到这一点?

这是我的启动画面的代码

*更新:将启动画面从 QMainWindow 更改为 QWidget

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import os
import sys

class ThreadProgress(QThread):
    mysignal = pyqtSignal(int)
    def __init__(self, parent=None):
        QThread.__init__(self, parent)
    def run(self):
        # here I list all my imports
        self.mysignal.emit(100)
        
class Splash(QWidget):
    def __init__(self, parent = None):
        super(Splash, self).__init__(parent)
        self.setWindowFlags(Qt.FramelessWindowHint)
        pixmap = QPixmap("photos/splash.png")
        self.splash_image = QLabel(self)
        self.splash_image.setPixmap(pixmap.scaled(350, 300))
        self.pbar = QProgressBar(self)
        self.pbar.setValue(0)
        vbox = QVBoxLayout()
        vbox.addWidget(self.splash_image)
        vbox.addWidget(self.pbar)
        self.setLayout(vbox)
        progress = ThreadProgress(self)
        progress.mysignal.connect(self.progress)
        progress.start()
        
    @pyqtSlot(int)
    def progress(self, finished):
        self.pbar.setValue(finished)
        if finished == 100:
            self.hide()
            self.start_main()
    
    def start_main(self):
        from MainWindow import MainWindow
        main = MainWindow(self)
        main.show()

def main():
    app=QApplication(sys.argv)
    window = Splash()
    window.show()
    app.exec_()

main()

标签: pythonqtpyqtpyqt5qt5

解决方案


推荐阅读