43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from PySide6.QtWidgets import QApplication, QSplashScreen
|
|
from PySide6.QtCore import Qt, QTimer
|
|
from PySide6.QtGui import QPixmap
|
|
import sys
|
|
import os
|
|
|
|
def show_splash(existing_app=None):
|
|
# Use existing app if provided, otherwise create a new one
|
|
app = existing_app or QApplication(sys.argv)
|
|
|
|
# Get the directory of the executable or script
|
|
if getattr(sys, 'frozen', False):
|
|
# Running as compiled executable
|
|
app_dir = os.path.dirname(sys.executable)
|
|
else:
|
|
# Running as script
|
|
app_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
# Look for splash image
|
|
splash_image = os.path.join(app_dir, 'resources', 'splash.png')
|
|
if not os.path.exists(splash_image):
|
|
splash_image = os.path.join(app_dir, 'splash.png')
|
|
if not os.path.exists(splash_image):
|
|
print("No splash image found, skipping splash screen")
|
|
return None, app
|
|
|
|
# Create splash screen
|
|
pixmap = QPixmap(splash_image)
|
|
splash = QSplashScreen(pixmap, Qt.WindowStaysOnTopHint)
|
|
splash.show()
|
|
app.processEvents()
|
|
|
|
return splash, app
|
|
|
|
if __name__ == "__main__":
|
|
# This is for testing the splash screen independently
|
|
splash, app = show_splash()
|
|
|
|
# Close the splash after 3 seconds
|
|
QTimer.singleShot(3000, splash.close)
|
|
|
|
sys.exit(app.exec())
|