第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在懸停時為 qpushbutton 背景的漸變設(shè)置從左到右的動畫?

如何在懸停時為 qpushbutton 背景的漸變設(shè)置從左到右的動畫?

守著星空守著你 2022-06-14 16:23:15
我正在練習(xí)我的編程技能,并且正在嘗試使用PyQt. 我是在Login V4之后設(shè)計的?,F(xiàn)在,當您將鼠標懸停在登錄按鈕上時,我正在嘗試從登錄按鈕實現(xiàn)酷炫的漸變動畫。但是為CSS類似的東西設(shè)置動畫的代碼在qt stylesheet. 我用 Qt Designer 設(shè)計了這個應(yīng)用程序。甚至可以在 中創(chuàng)建該動畫pyqt嗎?如果是,你是怎么做到的?我的應(yīng)用程序如下所示:登錄按鈕的樣式表代碼:QPushButton#login_button {font: 75 10pt "Microsoft YaHei UI";font-weight: bold;color: rgb(255, 255, 255);background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgb(61, 217, 245), stop:1 rgb(240, 53, 218));border-style: solid;border-radius:21px;}
查看完整描述

1 回答

?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

正如您所懷疑的,Qt 樣式表不支持動畫。在這種情況下,另一種方法是使用 QXAnimation 作為 QVariantAnimation:


from PyQt5 import QtCore, QtGui, QtWidgets



class LoginButton(QtWidgets.QPushButton):

    def __init__(self, parent=None):

        super().__init__(parent)


        self.setMinimumSize(60, 60)


        self.color1 = QtGui.QColor(240, 53, 218)

        self.color2 = QtGui.QColor(61, 217, 245)


        self._animation = QtCore.QVariantAnimation(

            self,

            valueChanged=self._animate,

            startValue=0.00001,

            endValue=0.9999,

            duration=250

        )


    def _animate(self, value):

        qss = """

            font: 75 10pt "Microsoft YaHei UI";

            font-weight: bold;

            color: rgb(255, 255, 255);

            border-style: solid;

            border-radius:21px;

        """

        grad = "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 {color1}, stop:{value} {color2}, stop: 1.0 {color1});".format(

            color1=self.color1.name(), color2=self.color2.name(), value=value

        )

        qss += grad

        self.setStyleSheet(qss)


    def enterEvent(self, event):

        self._animation.setDirection(QtCore.QAbstractAnimation.Forward)

        self._animation.start()

        super().enterEvent(event)


    def leaveEvent(self, event):

        self._animation.setDirection(QtCore.QAbstractAnimation.Backward)

        self._animation.start()

        super().enterEvent(event)


if __name__ == "__main__":

    import sys


    app = QtWidgets.QApplication(sys.argv)


    w = QtWidgets.QWidget()

    lay = QtWidgets.QVBoxLayout(w)


    for i in range(5):

        button = LoginButton()

        button.setText("Login")

        lay.addWidget(button)

    lay.addStretch()

    w.resize(640, 480)

    w.show()

    sys.exit(app.exec_())



查看完整回答
反對 回復(fù) 2022-06-14
  • 1 回答
  • 0 關(guān)注
  • 314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號