python - 为主程序创建一个新的单独窗口
问题描述
所以,我正在尝试为我的应用创建启动画面;闪屏是一个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()
解决方案
推荐阅读
- groovy - Apache Camel - 可以在 csv 文件中插入一行
- r - 将 case_when 与多个真条件一起使用
- angular - 矩阵表链接到 Angular 中的组件
- google-apps-script - 一张一张的谷歌应用脚本运行功能
- html - 单击“x”按钮时烧瓶闪烁消息未关闭
- python - 将 API 端点动态添加到现有的 Flask 应用程序
- shiny - R闪亮的无效下标类型'列表'
- amazon-web-services - 对于在 AWS 胶水和规则存储库中作为 Dynamo DB 运行的 pypark 中基于规则的引擎,什么是有效的设计?
- .net-core - .Net-Core ReportGenerator - 如何递归匹配 Cobertura 覆盖文件
- angular - 如何使用 ionic 4 更改警报控制器背景颜色