当前位置:   article > 正文

50-输入和显示-欢迎界面QSplashScreen_vs2015 配置 qsplashscreen

vs2015 配置 qsplashscreen

欢迎界面QSplashScreen

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())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

用户可以通过用鼠标单击初始屏幕来隐藏它。由于初始屏幕通常在事件循环开始运行之前显示,因此需要定期调用以接收鼠标单击。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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

QSplashScreen 通过 showMessage()函数支持这一点。

如果你想自己绘制,可以用pixmap()获得一个指向初始屏幕中使用的pixmap的指针。

或者可以对 QSplashScreen 进行子类化并重新实现 drawContent()。

如果有多个屏幕,也可以在与主屏幕不同的屏幕上显示初始屏幕。例如:

screen = QGuiApplication.screens().at(1)
pixmap = QPixmap(":/splash.png")
splash = QSplashScreen(screen,pixmap)
splash.show()
  • 1
  • 2
  • 3
  • 4

实例化

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • screen – PySide6.QtGui.QScreen
  • pixmap – PySide6.QtGui.QPixmap
  • f –WindowFlags

这是一个重载函数。此功能允许您指定屏幕的屏幕。

此构造函数的典型用法是,如果您有多个屏幕,并且希望在与主屏幕不同的屏幕上显示启动屏幕。在这种情况下,通过适当的屏幕。构建一个显示像素图的启动屏幕。

不需要设置小部件标志f,除了WindowStaysOnTopHint。

方法

方法返回值说明
finish(w)strw – PySide6.QtWidgets.QWidget
在调用close()之前,使启动屏幕等待小部件mainWin显示。
message()str返回当前显示在初始屏幕上的消息。
pixmap()PySide6.QtGui.QPixmap返回启动屏幕中使用的位图。
该图像没有通过showMessage()调用绘制的任何文本。
setPixmap(pixmap)Nonepixmap – PySide6.QtGui.QPixmap
将用作启动屏幕图像的位图设置为pixmap
drawContents(painter)Nonepainter– PySide6.QtGui.QPainter
使用painter.painter绘制闪屏的内容。
默认实现绘制showMessage()传递的消息。如果您想在启动屏幕上绘制自己的图形,请重新实现此功能。
[slot]clearMessage()None删除启动屏幕上显示的消息
showMessage(message[,alignment=Qt.AlignLeft[,color=Qt.black]])Nonemessage - – 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())

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/309546
推荐阅读
相关标签
  

闽ICP备14008679号