如何使图像label逐渐(平滑)出现。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow10(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(492, 613)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("#centralwidget{\n"
"background-color: rgb(0, 0, 0);\n"
"}")
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setStyleSheet("QFrame {\n"
"background-color: rgb(0, 0, 0);\n"
"color: rgb(220, 220, 220);\n"
"border-radius: 10px\n"
"\n"
"}")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.progressBar = QtWidgets.QProgressBar(self.frame)
self.progressBar.setGeometry(QtCore.QRect(156, 530, 161, 21))
self.progressBar.setStyleSheet("QProgressBar{\n"
"background-color: rgb(98, 114, 164);\n"
"color: rgb(200, 200, 200);\n"
"border-style: none;\n"
"\n"
"\n"
"text-align: center\n"
"}\n"
"\n"
"QProgressBar::chunk{\n"
"\n"
"border-radius: 10 px;\n"
" background-color: rgb(255, 255, 255);\n"
"}")
self.progressBar.setProperty("value", 24)
self.progressBar.setAlignment(QtCore.Qt.AlignCenter)
self.progressBar.setObjectName("progressBar")
self.label_4 = QtWidgets.QLabel(self.frame)
self.label_4.setGeometry(QtCore.QRect(300, 560, 181, 31))
font = QtGui.QFont()
font.setPointSize(14)
self.label_4.setFont(font)
self.label_4.setStyleSheet("color: rgb(98, 114, 164);")
self.label_4.setObjectName("label_4")
self.label_3 = QtWidgets.QLabel(self.frame)
self.label_3.setGeometry(QtCore.QRect(20, 0, 431, 291))
self.label_3.setText("")
self.label_3.setPixmap(QtGui.QPixmap("Изображения/bb.jpg"))
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
self.label_3.setObjectName("label_3")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(42, 274, 391, 231))
self.label.setText("")
self.label.setPixmap(QtGui.QPixmap("Изображения/ggg.jpg"))
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.frame)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label_4.setText(_translate("MainWindow", "<strong>Created</strong>: Nanoxia"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow10()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
这是主文件中的类,但图片仍然不流畅
counter = 0
class SplashScreen(QtWidgets.QMainWindow, Ui_MainWindow10):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow10()
self.ui.setupUi(self)
## Remove Title Bar
self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
##Drop shadow Effect
self.shadow = QGraphicsDropShadowEffect(self)
self.shadow.setBlurRadius(20)
self.shadow.setXOffset(0)
self.shadow.setYOffset(0)
self.shadow.setColor(QColor(0, 0, 0, 60))
self.ui.frame.setGraphicsEffect(self.shadow)
# QTImer ==> Start
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.progress)
##Timer in millisecond
self.timer.start(35)
def progress(self):
global counter
# SET Value to progress bar
self.ui.progressBar.setValue(counter)
# CLose splash scree and open app
if counter > 100:
#stop timer
self.timer.stop()
#show main window
self.main = MainWindow()
self.main.show()
#close splash screen
self.close()
counter += 1
def start_animation(self):
opacity_effect = QtWidgets.QGraphicsOpacityEffect(self.label)
self.label.setGraphicsEffect(opacity_effect)
geometry_animation = QtCore.QPropertyAnimation(
self.label,
b"geometry",
duration=4700,
startValue=QtCore.QRect(190, -260, 671, 261),
endValue=QtCore.QRect(42, 274, 391, 231),
)
opacity_animation = QtCore.QPropertyAnimation(
opacity_effect,
b"opacity",
duration=6000,
startValue=0.0,
endValue=1.0
)
group = QtCore.QParallelAnimationGroup(self.label)
group.addAnimation(geometry_animation)
group.addAnimation(opacity_animation)
group.start(QtCore.QAbstractAnimation.DeleteWhenStopped)

该类
QPropertyAnimation动画Qt属性。更多https://doc.qt.io/qt-5/qpropertyanimation.html
更新
我给你看了
ДВЕ动画。删除动画geometry_animation,您将拥有所需的内容。莉娜.jpg
好的.png