pyqt制作的右下角弹出框(python)

参考了网上某位仁兄的方法,做个记录

构造函数中:

self.desktop=QDesktopWidget()
self.move((self.desktop.availableGeometry().width()-self.width()),self.desktop.availableGeometry().height()) #初始化位置到右下角
self.showAnimation()

    #弹出动画
    def showAnimation(self):
        #显示弹出框动画
        self.animation=QPropertyAnimation(self,"pos")
        self.animation.setDuration(1000)
        self.animation.setStartValue(QPoint(self.x(),self.y()))
        self.animation.setEndValue(QPoint((self.desktop.availableGeometry().width()-self.width()),(self.desktop.availableGeometry().height()-self.height()+self.SHADOW_WIDTH)))
        self.animation.start()

        #设置弹出框1秒弹出,然后渐隐
        self.remainTimer=QTimer()
        self.connect(self.remainTimer,SIGNAL("timeout()"),self,SLOT("closeAnimation()"))
        self.remainTimer.start(10000)  #定时器10秒
    #关闭动画
    @pyqtSlot()
    def closeAnimation(self):
        #清除Timer和信号槽
        self.remainTimer.stop()
        self.disconnect(self.remainTimer,SIGNAL("timeout()"),self,SLOT("closeAnimation()"))
        self.remainTimer.deleteLater()
        self.remainTimer=None
        #弹出框渐隐
        self.animation =QPropertyAnimation(self,"windowOpacity")
        self.animation.setDuration(1000)
        self.animation.setStartValue(1)
        self.animation.setEndValue(0)
        self.animation.start()
        #动画完成后清理
        self.connect(self.animation,SIGNAL("finished()"),self,SLOT("clearAll()"))

    #清理及退出
    @pyqtSlot()
    def clearAll(self):
        self.disconnect(self.animation,SIGNAL("finished()"),self,SLOT("clearAll()"))
        sys.exit()        #退出

或者直接: self.connect(self.animation,SIGNAL("finished()"),self,SLOT("close()"))

效果如下:






  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值