python 滚动字幕_python – 在PyQt中滚动文本?
我正在尝试让feedparser中的文本从右到左滚动屏幕.我正在使用PyQt5,我不知道如何添加此功能.
我想要显示的是下面
import feedparser
sports = feedparser.parse('http://rssfeeds.usatoday.com/UsatodaycomSports-TopStories')
for e in sports['entries']:
news = (e.get('title', ''))
我正在寻找连续滚动,直到所有新闻标题都被阅读,然后页面被重新加载以获取最新的头条新闻或者只是重读已经存在的新闻.谢谢!
解决方法:
您可以使用QTimeLine在标签中显示连续滚动的新闻切片.如果在QTimeLine运行时应用程序中的其他功能被阻止,我会在一个小的gui中实现它来尝试:
import feedparser
import sys
from PyQt5 import QtWidgets, QtCore
class MyWidget(QtWidgets.QWidget):
def __init__(self, parent = None):
QtWidgets.QWidget.__init__(self, parent)
self.setGeometry(200, 200, 800, 600)
self.textLabel = QtWidgets.QLabel('') # label showing some text
self.uButton = QtWidgets.QPushButton('upper Button')
self.lButton = QtWidgets.QPushButton('lower Button')
self.label = QtWidgets.QLabel('') # label showing the news
self.label.setAlignment(QtCore.Qt.AlignRight) # text starts on the right
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.textLabel)
self.layout.addWidget(self.uButton)
self.layout.addWidget(self.lButton)
self.layout.addWidget(self.label)
self.layout.setStretch(0, 3)
self.layout.setStretch(1, 3)
self.layout.setStretch(2, 3)
self.layout.setStretch(3, 1)
self.setLayout(self.layout)
self.timeLine = QtCore.QTimeLine()
self.timeLine.setCurveShape(QtCore.QTimeLine.LinearCurve) # linear Timeline
self.timeLine.frameChanged.connect(self.setText)
self.timeLine.finished.connect(self.nextNews)
self.signalMapper = QtCore.QSignalMapper(self)
self.signalMapper.mapped[str].connect(self.setTlText)
self.uButton.clicked.connect(self.signalMapper.map)
self.signalMapper.setMapping(self.uButton, self.uButton.text())
self.lButton.clicked.connect(self.signalMapper.map)
self.signalMapper.setMapping(self.lButton, self.lButton.text())
self.feed()
def feed(self):
fm = self.label.fontMetrics()
self.nl = int(self.label.width()/fm.averageCharWidth()) # shown stringlength
news = []
sports = feedparser.parse('http://rssfeeds.usatoday.com/UsatodaycomSports-TopStories')
for e in sports['entries']:
news.append(e.get('title', ''))
appendix = ' '*self.nl # add some spaces at the end
news.append(appendix)
delimiter = ' +++ ' # shown between the messages
self.news = delimiter.join(news)
newsLength = len(self.news) # number of letters in news = frameRange
lps = 4 # letters per second
dur = newsLength*1000/lps # duration until the whole string is shown in milliseconds
self.timeLine.setDuration(dur)
self.timeLine.setFrameRange(0, newsLength)
self.timeLine.start()
def setText(self, number_of_frame):
if number_of_frame < self.nl:
start = 0
else:
start = number_of_frame - self.nl
text = '{}'.format(self.news[start:number_of_frame])
self.label.setText(text)
def nextNews(self):
self.feed() # start again
def setTlText(self, text):
string = '{} pressed'.format(text)
self.textLabel.setText(string)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
添加PySide2版本:
import feedparser
import sys
from PySide2 import QtWidgets, QtCore
class MyWidget(QtWidgets.QWidget):
def __init__(self, parent = None):
QtWidgets.QWidget.__init__(self, parent)
self.setGeometry(200, 200, 800, 600)
self.textLabel = QtWidgets.QLabel('') # label showing some text
self.uButton = QtWidgets.QPushButton('upper Button')
self.lButton = QtWidgets.QPushButton('lower Button')
self.label = QtWidgets.QLabel('') # label showing the news
self.label.setAlignment(QtCore.Qt.AlignRight) # text starts on the right
self.layout = QtWidgets.QVBoxLayout()
self.layout.addWidget(self.textLabel)
self.layout.addWidget(self.uButton)
self.layout.addWidget(self.lButton)
self.layout.addWidget(self.label)
self.layout.setStretch(0, 3)
self.layout.setStretch(1, 3)
self.layout.setStretch(2, 3)
self.layout.setStretch(3, 1)
self.setLayout(self.layout)
self.timeLine = QtCore.QTimeLine()
self.timeLine.setCurveShape(QtCore.QTimeLine.LinearCurve) # linear Timeline
self.timeLine.frameChanged.connect(self.setText)
self.timeLine.finished.connect(self.nextNews)
self.signalMapper = QtCore.QSignalMapper(self)
self.signalMapper.mapped[str].connect(self.setTlText)
self.uButton.clicked.connect(self.signalMapper.map)
self.signalMapper.setMapping(self.uButton, self.uButton.text())
self.lButton.clicked.connect(self.signalMapper.map)
self.signalMapper.setMapping(self.lButton, self.lButton.text())
self.feed()
def feed(self):
fm = self.label.fontMetrics()
self.nl = int(self.label.width()/fm.averageCharWidth()) # shown stringlength
news = []
sports = feedparser.parse('http://rssfeeds.usatoday.com/UsatodaycomSports-TopStories')
for e in sports['entries']:
news.append(e.get('title', ''))
appendix = ' '*self.nl # add some spaces at the end
news.append(appendix)
delimiter = ' +++ ' # shown between the messages
self.news = delimiter.join(news)
newsLength = len(self.news) # number of letters in news = frameRange
lps = 4 # letters per second
dur = newsLength*1000/lps # duration until the whole string is shown in milliseconds
self.timeLine.setDuration(dur)
self.timeLine.setFrameRange(0, newsLength)
self.timeLine.start()
def setText(self, number_of_frame):
if number_of_frame < self.nl:
start = 0
else:
start = number_of_frame - self.nl
text = '{}'.format(self.news[start:number_of_frame])
self.label.setText(text)
def nextNews(self):
self.feed() # start again
def setTlText(self, text):
string = '{} pressed'.format(text)
self.textLabel.setText(string)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
标签:python,label,pyqt
来源: https://codeday.me/bug/20191003/1848065.html
python 滚动字幕_python – 在PyQt中滚动文本?相关推荐
- Python使用pdfminer3k提取PDF文件中的文本
推荐教材: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年12月第11次印刷,山东省一流 ...
- html语音中添加滚动字幕,如何给视频添加滚动字幕
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 以爱剪辑为例,给视频添加滚动字幕的方法如下: 1.打开爱剪辑视频编辑软件. 2.打开后双击下面的白色方框添加要制作的视频. 3.点 ...
- html 滚动字幕如何设置,如何制作滚动字幕 视频画面加滚动字幕,自己设置滚动字幕的显示时间(滚动次数)...
不管是电影还是电视中都经常会出现一些滚动字幕,滚动字幕的内容可以是广告.通知.说明.或者是总结等.视频中的滚动字幕除了起到宣传或提示的作用,更重要的是丰富了视频的层次,让画面更加精美.但有时候我们自己 ...
- html+监听+页面滚动到底部,解决HTML5中滚动到底部的事件问题
问题:在H5中,我们有这样的需求:例如有列表的时候,滚动到底部时,需要加载更多. 解决方案:可以采用window的滚动事件进行处理 分析:如果滚动是针对整个屏幕而言的(不针对于某个界面小块),那么这个 ...
- android 屏幕滚动字幕,LED灯牌显示屏滚动字幕
LED灯牌显示屏滚动字幕app是一款手机led灯牌工具,直接将手机作为led等,打造喜欢的led滚动效果:在看演唱会的时候,拿起手机就能当led显示灯,完全不用特地准备,还方便携带:并且在制作led灯 ...
- html 滚动字幕如何设置,Html 文字滚动
滚动字幕会让很多人感到兴奋,特别是第一次使用滚动字幕时,会爱不释手.现在做一个详细的方案,让你更全面地了解一下. 滚动字幕在FrontPage的组件里有,但是FrontPage这个软件只能支持单行文字 ...
- html滚动字幕图片,网页HTML代码滚动文字制作
讲述HTML代码中比较特殊的标签,它能使网页中的文字滚动,并且可以控制其滚动的属性.以下是小编整理的网页HTML代码滚动文字制作,欢迎来阅读! 制作滚动文字 通过本章前面的学习,读者已经能够很好地控制 ...
- python字符串转义序列_Python | 忽略字符串中的转义序列
python字符串转义序列 First see, how escape sequence works? 首先看,转义序列如何工作? In the below example, we are using ...
- python字符串添加元素_python向字符串中添加元素的实例方法
Python中的字符串对象是不能更改的,也即直接修改字符串中的某一位或几位字符是实现不了的,即python中字符串对象不可更改,但字符串对象的引用可更改,可重新指向新的字符串对象. + 直接字符串外+ ...
- python 滚动字幕_Python pygame绘制文字制作滚动文字过程解析
这篇文章主要介绍了Python pygame绘制文字制作滚动文字过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 字体常用的不是很多,在pyg ...
最新文章
- 使用PHP Excel类读取和生成excel文件
- 测试Infineon车载LED驱动芯片TLD2131
- android_home is not set mac,mac解决appium-doctor报ANDROID_HOME is NOT set
- 关于IOCP完成端口的文章
- const int *p说明不能修改_C语言关键字const和指针结合的使用
- MVC学习IIS的不同版本(一)
- 拿 C# 搞函数式编程
- 趣挨踢 | 关于遗留代码的那些事儿
- Genymotion - 强大好用高性能的 Android 模拟器 (在电脑流畅运行APK安卓软件游戏的利器)...
- js中“||”和“”的高级用法
- 机器学习基础-线性代数学习
- 个人总结的【LaTeX】超高频特殊符号表(仅33个符号)+复杂公式速写解决方案,请查收!
- 192.168.8.1手机登陆_192.168.1.1手机登陆
- 的it生活_双子IT男性格随和、爱美食懂生活,会给女朋友准备小惊喜 | 企鹅来电VOL.03...
- PACP学习笔记三:PCAP方法说明
- win10驱动开发4——加载/卸载驱动
- 花了4000多的钱,领导让我去开8000多元的发票,我该怎么办??
- 如何获客:3招做好触客营销实现高效获
- 【2023最新】超详细图文保姆级教程:App开发新手入门(1)
- ssrs订阅_SSRS订阅失败警报
热门文章
- iOS发展史:从iPhone OS 1.0到iOS10 终于支持骚扰拦截了
- 动态规划-背包问题求解过程【代码 from eason】
- centeros 卸载mysql_如何卸载数据库centeros
- Google Analytics SEO 实时 网站 访问量 统计
- android学习日记——高级组件3(PopupWindow,Notifcation,Style,Theme,自定义组件)
- OEM/ODM/OBM
- 简历模版|简历在线制作|分享几个免费在线简历模版的网站
- 使用GitHub制作一个高逼格的在线简历
- 谷歌浏览器fash弹框的设置
- 技术干货|eBay对流量控制说“so easy”!