赞
踩
QSplashScreen
小组件提供了一个初始屏幕,可以在应用程序启动期间显示。
初始屏幕是通常在启动应用程序时显示的小组件。初始屏幕通常用于启动时间较长的应用程序(例如,需要时间建立连接的数据库或网络应用程序),以向用户提供应用程序正在加载的反馈。
初始屏幕显示在屏幕中央。如果要将其保留在桌面上所有其他窗口之上,则将其添加到初始小部件的窗口标志可能会很有用。WindowStaysOnTopHint
某些 X11 窗口管理器不支持"停留在顶部"标志。解决方案是设置一个计时器,该计时器定期在初始屏幕上调用,以模拟"保持最佳"效果。raise()
最常见的用法是在主小部件显示在屏幕上之前显示初始屏幕。以下代码片段对此进行了说明,其中显示初始屏幕,并在显示应用程序的主窗口之前执行一些初始化任务:
if __name__ =="__main__":
app = QApplication([])
pixmap = QPixmap(":/splash.png")
splash = QSplashScreen(pixmap)
splash.show()
app.processEvents()...
window = QMainWindow()
window.show()
splash.finish(window)
sys.exit(app.exec())
用户可以通过用鼠标单击初始屏幕来隐藏它。由于初始屏幕通常在事件循环开始运行之前显示,因此需要定期调用以接收鼠标单击。processEvents()
有时,使用消息更新初始屏幕很有用,例如,在应用程序启动时宣布已建立的连接或加载的模块:
pixmap = QPixmap(":/splash.png")
splash = QSplashScreen(pixmap)
splash.show()
...// Loading some items
splash.showMessage("Loaded modules")
QCoreApplication.processEvents()
...// Establishing connections
splash.showMessage("Established connections")
QCoreApplication.processEvents()
QSplashScreen 通过 showMessage()函数支持这一点。
如果你想自己绘制,可以用pixmap()获得一个指向初始屏幕中使用的pixmap的指针。
或者可以对 QSplashScreen 进行子类化并重新实现 drawContent()。
如果有多个屏幕,也可以在与主屏幕不同的屏幕上显示初始屏幕。例如:
screen = QGuiApplication.screens().at(1)
pixmap = QPixmap(":/splash.png")
splash = QSplashScreen(screen,pixmap)
splash.show()
from PySide6.QtWidgets import QSplashScreen
QSplashScreen(pixmap: Union[PySide6.QtGui.QPixmap,PySide6.QtGui.QImage,str]= Default(PySide6.QtGui.QPixmap),
f: PySide6.QtCore.Qt.WindowType = Default(Qt.WindowFlags))-> None
QSplashScreen(screen: PySide6.QtGui.QScreen,pixmap: Union[PySide6.QtGui.QPixmap,PySide6.QtGui.QImage,str]= Default(PySide6.QtGui.QPixmap),
f: PySide6.QtCore.Qt.WindowType = Default(Qt.WindowFlags))-> None
这是一个重载函数。此功能允许您指定屏幕的屏幕。
此构造函数的典型用法是,如果您有多个屏幕,并且希望在与主屏幕不同的屏幕上显示启动屏幕。在这种情况下,通过适当的屏幕。构建一个显示像素图的启动屏幕。
不需要设置小部件标志f,除了WindowStaysOnTopHint。
方法 | 返回值 | 说明 |
---|---|---|
finish(w) | str | w – PySide6.QtWidgets.QWidget 在调用close()之前,使启动屏幕等待小部件mainWin显示。 |
message() | str | 返回当前显示在初始屏幕上的消息。 |
pixmap() | PySide6.QtGui.QPixmap | 返回启动屏幕中使用的位图。 该图像没有通过showMessage()调用绘制的任何文本。 |
setPixmap(pixmap) | None | pixmap – PySide6.QtGui.QPixmap 将用作启动屏幕图像的位图设置为pixmap |
drawContents(painter) | None | painter– PySide6.QtGui.QPainter 使用painter.painter绘制闪屏的内容。 默认实现绘制showMessage()传递的消息。如果您想在启动屏幕上绘制自己的图形,请重新实现此功能。 |
[slot]clearMessage() | None | 删除启动屏幕上显示的消息 |
showMessage(message[,alignment=Qt.AlignLeft[,color=Qt.black]]) | None | message - – STR alignment- 对齐方式 color – PySide6.QtGui.QColor 用彩色将消息文本绘制到启动屏幕上,并根据对齐的标志对齐文本。此函数调用重新绘制()以确保立即重新绘制启动屏幕。因此,该消息将与应用程序正在执行的操作(例如加载文件)保持最新。 |
信号 | 说明 |
---|---|
QSplashScreen.messageChanged(message) | message – str 当启动屏幕上的信息发生变化时,会发出此信号。message是新消息,当消息被删除时为空字符串。 |
首先我们实例化一个QSplashScreen控件,并调用setPixmap()方法设置图片,接着调用show()方法进行显示。
showMessage(str,alignment,color)方法在程序启动画面上显示文字。
alignment为文字在启动画面上的位置,我们这里设为底部居中;color为文字的颜色,我们这里设为白色。
由于程序启动并不耗时,启动画面会一闪而过,所以我们在这里加一行time.sleep(2)来暂停两秒看一下效果。当我们决定可以开始显示主窗口时,调用finish()传入主窗口实例就可以了。
# -*- coding: UTF-8 -*-
# File date: Hi_2023/2/28 23:03
# File_name: demo.py
import sys
import time
from PySide6.QtGui import QIcon,QPixmap
from PySide6.QtCore import QMimeData,Qt
from PySide6.QtWidgets import *
class MyWindow(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.set_windows()
self.business_demo()
def set_windows(self):
self.resize(300,300)# 设置窗口大小
self.setWindowTitle("hello world")# 设置窗口标题
def business_demo(self):
qlabel = QLabel(self)
qlabel.setText("hello world")# 设置label文字
qlabel.move((self.width()- qlabel.width())// 2,(self.height()- qlabel.height())// 2)# 居中展示文本
if __name__ =='__main__':
app = QApplication(sys.argv)
splash = QSplashScreen()
splash.setPixmap(QPixmap('../../../Resources/Images/Python-code.jpg'))
splash.show()
splash.showMessage('Welcome to Use This PySide6 notebook~',Qt.Alignbottom | Qt.AlignCenter,Qt.white)
time.sleep(2)
demo = MyWindow()
demo.show()
splash.finish(demo)
sys.exit(app.exec())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。