pyqt文字动画(由官方例子处学习)

# -*- coding: utf-8 -*-

# python:2.x

__author__ = ‘Administrator‘

from PyQt4.QtGui import *

from PyQt4.QtCore import *

from PyQt4.Qt import *

class WigglyWidget(QWidget):

def __init__(self,parnet=None):

super(WigglyWidget, self).__init__(parnet)

self.setBackgroundRole(QPalette.Midlight)#setBackgroundRole() 函数告诉QWidget使用调色盘的黑色作为背景颜色,而不是默认的窗口(window)颜色;midlight刷颜色

self.setAutoFillBackground(True)

"""

当组件被放大时,Qt就用这个设定的默认的颜色来填充任何 新区域,因为这个时候paintEvent()事件还没有机会来绘制这些新的区域。

我们还必须调用 setAutoFillBackground(true)函数来使能这个机制。(默认情况下,子组件会从父组件中继承背景色。)

"""

newFont=self.font()#应该创建文字

newFont=QFont()#和self.font()一样

newFont.setPointSize(newFont.pointSize()+20)#setPointSize()设置字符的高度显示在屏幕上指定数量的像素,pointSize()返回像素大小的字体

self.setFont(newFont)#setFont()使用应用程序的默认字体

self.timer=QBasicTimer()#QBasicTimer类为对象提供计时器事件,建议使用更高级的qtimer类

self.text=‘‘

self.step=0

self.timer.start(60,self)

def paintEvent(self, event):

sineTable=(0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38)

metrics=QFontMetrics(self.font())#QFontMetrics类提供了字体度量信息

x=(self.width()-metrics.width(self.text))/2#QFontMetrics.width()有2个方法

# width (self, QChar)

# width (self, QString, int length = -1)

y=(self.height()+metrics.ascent()-metrics.descent())/2#ascent()返回的字体的高度,descent()返回的字体的最低

color=QColor()

painter=QPainter(self)

for i,ch in enumerate(self.text):

index=(self.step+i)%16

color.setHsv((15-index)*16,255,191)#QColor.setHsv (self, int, int, int, int alpha = 255)

"""

原文:Sets a HSV color value; h is the hue, s is the saturation, v is the value and a is the alpha component of the HSV color.

The saturation, value and alpha-channel values must be in the range 0-255, and the hue value must be greater than -1.

翻译:设置一个HSV颜色值;H为色调,饱和度的是,V和价值是HSV颜色的alpha分量。

饱和,价值和alpha通道值必须在0-255范围,和色调值必须大于1。

"""

painter.setPen(color)

painter.drawText(x,y-((sineTable[index]*metrics.height())/400),ch)

x+=metrics.width(ch)

def timerEvent(self, e):

if e.timerId()==self.timer.timerId():

self.step+=1

self.update()

else:

super(WigglyWidget,self).timerEvent(e)

class Dia(QDialog):

def __init__(self,parent=None):

super(Dia,self).__init__(parent)

self.with1=WigglyWidget()

lineEdit=QLineEdit()

layout=QVBoxLayout()

layout.addWidget(self.with1)

layout.addWidget(lineEdit)

self.setLayout(layout)

print dir(self.with1)

lineEdit.textChanged.connect()

lineEdit.setText(‘Hello World!‘)

self.setWindowTitle(‘With1‘)

self.resize(360,145)

def text1(self, newText):

self.text = newText

if __name__ == ‘__main__‘:

import sys

app = QApplication(sys.argv)

dialog =Dia()

dialog.show()

sys.exit(app.exec_())

如图:

时间: 2024-10-07 03:26:50

pyqt文字动画(由官方例子处学习)的相关文章

pyqt ColumnView, QFileSystemModel, QSplitter, QTreeView例子学习(由官方例子提供学习)

from PyQt4.QtGui import (QApplication, QColumnView, QFileSystemModel, QSplitter, QTreeView) #注意 """ QColumnView类提供了一个模型/视图列视图的实现,继承QAbstractItemView 提供了一个本地文件系统的数据模型,继承QAbstractItemModel 实现了一个分流器小部件,继承qframe 提供了一个默认的模型/视图树视图的实现,继承QAbstractI

canvas粒子文字动画教程

1,什么是canvas粒子动画 canvas粒子文字动画效果绚丽,实现的方法和难点主要是根据缓动函数来确定粒子的轨迹. 2.主要实现步骤 创建一个canvas,在canva上绘制文字或图片,然后获取像素的信息并生成一个粒子数组 var imageData = ctx.getImageData(0,0,canvas.width,canvas.height); ... var dotList = []; for(var x=0; x<imageData.width; x+=mass) { for(v

超酷创意分段式SVG文字动画特效

这是一款基于segment.js制作的非常有创意的分段式SVG文字动画特效.这个文字动画特效通过动画SVG的描边路径来制作各种文字的动画效果,效果非常的赞. 这个SVG文字动画特效的第一个DEMO中的最后几个例子使用了mo.js插件,一款由Oleg Solomka编写的用于制作网页图形动画的JavaScript库插件.通过mo.js,可以制作出效果更为震撼的文字动画效果. 在线预览   源码下载 特效中使用的字体是exquisite lowercase font,一套极富创意的WEB字体. 使用

10大炫酷的HTML5文字动画特效欣赏

文字是网页中最基本的元素,在CSS2.0时代,我们只能在网页上展示静态的文字,只能改变他的大小和颜色,显得枯燥无味.随着HTML5的发展,现在网页中的文字样式变得越来越丰富了,甚至出现了文字动画,HTML5和CSS3的强大之处就在于此.本文分享的10款炫酷的HTML5文字动画特效非常不错,一起来看看吧. 1.HTML5 Canvas粒子效果文字动画特效 之前我们分享过很多超酷的文字特效,其中也有利用HTML5和CSS3的.今天我们要来分享一款基于HTML5 Canvas的文字特效,输入框中输入想

通过例子进阶学习C++(五)计算2的1次方至2的64次方之和

本文是通过例子学习C++的第五篇,通过这个例子可以快速入门c++相关的语法. 1.上篇回顾 在上一篇中,我们通过字符数组计算264次方: 通过例子进阶学习C++(四)计算2的64次方 带着这个问题:为什么用字符数组,不用整数数组,开始本文. 2.先计算1+2+3+...100的和并总结规律 本题目直接实现,有点复杂,我们先计算1+2+3+...100的和,总结规律后再来计算. 这个是一个经典的循环问题,可以用for.while.do-while求和. #include<iostream> us

通过例子进阶学习C++(七)CMake项目通过模板库实现约瑟夫环

本文是通过例子学习C++的第七篇,通过这个例子可以快速入门c++相关的语法. 1.问题描述 回顾一下约瑟夫环问题:n 个人围坐在一个圆桌周围,现在从第 s 个人开始报数,数到第 m 个人,让他出局:然后从出局的下一个人重新开始报数,数到第 m 个人,再让他出局......,如此反复直到所有人全部出局为止. 上一篇我们通过数组.静态链表实现了约瑟夫环,具体参考: 通过例子进阶学习C++(六)你真的能写出约瑟夫环么 本文,我们进一步深入分析约瑟夫环问题,并通过c++模板库实现该问题求解,最后我们说明

Java Restful框架:Jersey入门示例(官方例子)

本文主要介绍了Java Restful框架Jersey入门例子(来源于官方网站https://jersey.java.net/),废话不多说进入正题. 在Jersey官方示例中(https://jersey.java.net/documentation/latest/getting-started.html),入门例子主要采用maven构建,在这里使用eclipse来创建我们的项目 1.使用maven 骨架方式创建项目,如下图, 2.,如果在eclipser中没有上面的选项,我们需要手动添加Je

Android自己定义组件系列【8】——面膜文字动画

我们掩盖文字动画Flash中非经货共同体共同,由于Android应用程序开发人员做你想要做这个动画在应用程序中去?本文中,我们看的是如何自己的定义ImageView来实现让一张文字图片实现文字的遮罩闪烁效果,以下先来看看效果吧. (录屏幕延时导致效果看起来不是非常好) 一.实现原理 实现原理是重写View的onCreate方法.获取图片资源后对每一个像素的透明度进行改动来实现,再启动一个线程来循环改变某个区域中的像素透明度. RGBA基础知识:(以下几段介绍文字引用自维基百科) RGBA是代表R

仿知乎/途家导航栏渐变文字动画效果-b

demo.gif 效果图如上,简单分析下 1.导航栏一开始是隐藏的,随着scrollView滚动而渐变 2.导航栏左右两边的navigationItem是一直显示的 3.导航栏参考了途家app,使用了毛玻璃效果,背景是一张图片 4.下拉放大图片效果 5.title文字动画效果 通过简单分析,系统的导航栏实现以上效果有点困难,直接自定义一个假的导航栏更容易点 分布拆解实现以上效果 一.下拉放大header图片 - (void)viewDidLoad {        [super viewDidL