我正在尝试让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中滚动文本?相关推荐

  1. Python使用pdfminer3k提取PDF文件中的文本

    推荐教材: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年12月第11次印刷,山东省一流 ...

  2. html语音中添加滚动字幕,如何给视频添加滚动字幕

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 以爱剪辑为例,给视频添加滚动字幕的方法如下: 1.打开爱剪辑视频编辑软件. 2.打开后双击下面的白色方框添加要制作的视频. 3.点 ...

  3. html 滚动字幕如何设置,如何制作滚动字幕 视频画面加滚动字幕,自己设置滚动字幕的显示时间(滚动次数)...

    不管是电影还是电视中都经常会出现一些滚动字幕,滚动字幕的内容可以是广告.通知.说明.或者是总结等.视频中的滚动字幕除了起到宣传或提示的作用,更重要的是丰富了视频的层次,让画面更加精美.但有时候我们自己 ...

  4. html+监听+页面滚动到底部,解决HTML5中滚动到底部的事件问题

    问题:在H5中,我们有这样的需求:例如有列表的时候,滚动到底部时,需要加载更多. 解决方案:可以采用window的滚动事件进行处理 分析:如果滚动是针对整个屏幕而言的(不针对于某个界面小块),那么这个 ...

  5. android 屏幕滚动字幕,LED灯牌显示屏滚动字幕

    LED灯牌显示屏滚动字幕app是一款手机led灯牌工具,直接将手机作为led等,打造喜欢的led滚动效果:在看演唱会的时候,拿起手机就能当led显示灯,完全不用特地准备,还方便携带:并且在制作led灯 ...

  6. html 滚动字幕如何设置,Html 文字滚动

    滚动字幕会让很多人感到兴奋,特别是第一次使用滚动字幕时,会爱不释手.现在做一个详细的方案,让你更全面地了解一下. 滚动字幕在FrontPage的组件里有,但是FrontPage这个软件只能支持单行文字 ...

  7. html滚动字幕图片,网页HTML代码滚动文字制作

    讲述HTML代码中比较特殊的标签,它能使网页中的文字滚动,并且可以控制其滚动的属性.以下是小编整理的网页HTML代码滚动文字制作,欢迎来阅读! 制作滚动文字 通过本章前面的学习,读者已经能够很好地控制 ...

  8. python字符串转义序列_Python | 忽略字符串中的转义序列

    python字符串转义序列 First see, how escape sequence works? 首先看,转义序列如何工作? In the below example, we are using ...

  9. python字符串添加元素_python向字符串中添加元素的实例方法

    Python中的字符串对象是不能更改的,也即直接修改字符串中的某一位或几位字符是实现不了的,即python中字符串对象不可更改,但字符串对象的引用可更改,可重新指向新的字符串对象. + 直接字符串外+ ...

  10. python 滚动字幕_Python pygame绘制文字制作滚动文字过程解析

    这篇文章主要介绍了Python pygame绘制文字制作滚动文字过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 字体常用的不是很多,在pyg ...

最新文章

  1. 使用PHP Excel类读取和生成excel文件
  2. 测试Infineon车载LED驱动芯片TLD2131
  3. android_home is not set mac,mac解决appium-doctor报ANDROID_HOME is NOT set
  4. 关于IOCP完成端口的文章
  5. const int *p说明不能修改_C语言关键字const和指针结合的使用
  6. MVC学习IIS的不同版本(一)
  7. 拿 C# 搞函数式编程
  8. 趣挨踢 | 关于遗留代码的那些事儿
  9. Genymotion - 强大好用高性能的 Android 模拟器 (在电脑流畅运行APK安卓软件游戏的利器)...
  10. js中“||”和“”的高级用法
  11. 机器学习基础-线性代数学习
  12. 个人总结的【LaTeX】超高频特殊符号表(仅33个符号)+复杂公式速写解决方案,请查收!
  13. 192.168.8.1手机登陆_192.168.1.1手机登陆
  14. 的it生活_双子IT男性格随和、爱美食懂生活,会给女朋友准备小惊喜 | 企鹅来电VOL.03...
  15. PACP学习笔记三:PCAP方法说明
  16. win10驱动开发4——加载/卸载驱动
  17. 花了4000多的钱,领导让我去开8000多元的发票,我该怎么办??
  18. 如何获客:3招做好触客营销实现高效获
  19. 【2023最新】超详细图文保姆级教程:App开发新手入门(1)
  20. ssrs订阅_SSRS订阅失败警报

热门文章

  1. iOS发展史:从iPhone OS 1.0到iOS10 终于支持骚扰拦截了
  2. 动态规划-背包问题求解过程【代码 from eason】
  3. centeros 卸载mysql_如何卸载数据库centeros
  4. Google Analytics SEO 实时 网站 访问量 统计
  5. android学习日记——高级组件3(PopupWindow,Notifcation,Style,Theme,自定义组件)
  6. OEM/ODM/OBM
  7. 简历模版|简历在线制作|分享几个免费在线简历模版的网站
  8. 使用GitHub制作一个高逼格的在线简历
  9. 谷歌浏览器fash弹框的设置
  10. 技术干货|eBay对流量控制说“so easy”!