首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt5 PushButton梯度动画

PyQt5 PushButton梯度动画
EN

Stack Overflow用户
提问于 2022-02-20 15:17:51
回答 2查看 281关注 0票数 0

我正试图为一个QPushButton做一个动画转换。

这是该按钮当前拥有的样式表。

代码语言:javascript
复制
QPushButton{
border-radius:5px;
background-color: rgb(49,  56,  68);
}

我想制作一个从第一个样式表到第二个样式表的动画:

代码语言:javascript
复制
QPushButton{
border-radius:5px;
background-color: qlineargradient(x1: 0, y1: 0.2, x2: 1, y2: 1,
                    stop: 0 rgba(53, 84, 232,150), stop: 1 rgba(73, 104, 252,255));
}

但我还没有找到任何解决办法。

EN

回答 2

Stack Overflow用户

发布于 2022-02-20 17:39:01

渐变色码在这里不起作用。我想你可以使用梯度背景图像。

票数 0
EN

Stack Overflow用户

发布于 2022-02-20 18:19:45

做了一些和我想要的类似的东西。不能完全工作,但这只是我编写的第一段代码。

代码语言:javascript
复制
        self.timer1 = QTimer()
        self.timer1.setInterval(4)


    def transitionthread(self, button):
        global r,b,g,r2,g2,b2,rd,gd,bd,rd2,gd2,bd2

        if(r != 53):r += 1
        else:
            rd = True
            pass
        if(g != 84):g += 1
        else:
            gd = True
            pass
        if(b != 232):b += 1
        else:
            bd = True
            pass

        if(r2 != 73):r2 += 1
        else:
            rd2 = True
            pass
        if(g2 != 104):g2 += 1
        else:
            gd2 = True
            pass
        if(b2 != 252):b2 += 1
        else:
            bd2 = True
            pass

        button.setStyleSheet("""
QPushButton {
    color: rgb(255, 255, 255);
background-color: qlineargradient(x1: 0, y1: 0.2, x2: 1, y2: 1,
                    stop: 0 rgba(%s, %s, %s,150), stop: 1 rgba(%s, %s, %s,255));
}
"""%(r,g,b,r2,g2,b2))                                              #73, 104, 252, 255 is nich wie links

        if rd==True and gd== True and bd== True and rd2== True and gd2== True and bd2== True:
            print("Finished")
            QtCore.QTimer.singleShot(100, self.resetData)
            self.timer1.stop()

    def activate(self):
        sending_button = self.sender()
        if sending_button.objectName() == "pushButton_3":
            Module1 = True
            print(Module1)
        self.timer1.timeout.connect(lambda: self.transitionthread(button = sending_button))
        self.timer1.start()
    def resetData(self):
        rd,gd,bd,rd2,gd2,bd2 = False, False, False, False, False, False
        r = 49
        b = 68
        g = 56

        r2 = 49
        b2 = 68
        g2 = 56
        print("done")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71195791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档