Анимация изображения или текста в окне приложения
Проще говоря мне нужно что бы на экран медленно выводилось изображение или текст, если это возможно в PyQt5.
Помогите кто может.
Мой код:
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Button(QPushButton):
mouseMoved = pyqtSignal()
def mouseMoveEvent(self, event):
self.mouseMoved.emit()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.lbl = QtWidgets.QLabel(self)
self.pix = QtGui.QPixmap("img.png")
self.lbl.setPixmap(self.pix)
self.lbl.resize(250, 350)
self.lbl.move(470, 1000)
self.lbl.close()
self.btn = QPushButton(self)
self.btn.setMouseTracking(True);
self.btn.setText("Кнопка")
self.btn.setStyleSheet("background: pink; color: Black; border-radius: 34px;}")
self.btn.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
self.btn.resize(300, 150)
self.btn.move(430, 1550)
self.btn.clicked.connect(self.image)
self.show()
def image(self):
self.lbl.show()
app = QtWidgets.QApplication(sys.argv)
ex = MainWindow()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Класс QGraphicsOpacityEffect обеспечивает эффект непрозрачности.
Класс QPropertyAnimation анимирует свойства Qt.
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.centralWidget = QWidget() # !!!
self.setCentralWidget(self.centralWidget) # !!!
self.lbl = QtWidgets.QLabel()
self.pix = QtGui.QPixmap("lena-2.png").scaled(400, 400) # ваше фото
self.lbl.setPixmap(self.pix)
self.btn = QPushButton()
self.btn.setText("Кнопка")
self.btn.setStyleSheet("""
background: pink;
color: black;
border-radius: 34px;
""")
self.btn.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
self.btn.setFixedSize(300, 150)
self.btn.setCheckable(True)
self.btn.clicked.connect(self.show_image)
layout = QGridLayout(self.centralWidget)
layout.addWidget(self.lbl, 0, 0, Qt.AlignCenter)
layout.addWidget(self.btn, 1, 0, Qt.AlignHCenter | Qt.AlignBottom)
self.eff = QGraphicsOpacityEffect()
self.eff.setOpacity(0.0)
self.lbl.setGraphicsEffect(self.eff)
self.animation = QPropertyAnimation(self.eff, b'opacity')
self.animation.setDuration(3000)
def show_image(self):
if not self.btn.isChecked():
self.animation.setStartValue(1)
self.animation.setEndValue(0)
else:
self.animation.setStartValue(0)
self.animation.setEndValue(1)
self.animation.start()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
ex = MainWindow()
ex.resize(420, 600)
ex.show()
sys.exit(app.exec_())
