170324 PyQt5-TextEdit的滚动效果

1625-5 王子昂 总结《2017年3月24日》 【连续第174天总结】

A. PyQt5 文本框的预览、滚动效果

B. 预览效果很简单,只需要在输入框内容变化时发出信号,调取槽来改变预览框的内容即可

然而TextEdit类居然没有text()方法……对着IDE长长一排备选方法挨个找了半天也没看到名字像的,只好去百度

幸好找到:toPlainText()方法,获取当前内容

传导过去以后,由于客户要求滚动效果,因此考虑如何实现

首先百度,发现一条都没有……真绝望,是这个需求很少还是PyQt5用的人太少了……?

只好自己想:由于该框是竖着显示的,那么每次滚动在头部(或尾部,由滚动方向决定)添加一个换行符不就行了吗。循环滚动的方法则是当添加若干个空格以后再循环添加尾部(或头部)。

滚动的方法则是使用QTimer定时器。

代码如下:

self.timer=QTimer(self)
self.timer.timeout.connect(self.roll)
self.ui.textEdit.textChanged.connect(self.textshow)

def roll(self):
    #if(self.flag==1):
    	a = self.ui.preview_text.text()
a= ' \n '+a #self.l=self.l+1 #if(self.l>=70): # flag=0 #初始化 # self.l=1
	#	c='\n\n'
	#	b=self.ui.textEdit.toPlainText()
	#	for i in b:
	#		c=c+i+'\n'
   #else:
	#a=c[-self.l]+c[-self.l-1]+a
	#self.l=self.l+2
	#if(c[-self.1]=='\n'&&c[-self.1-1]=='\n'):	#连续两个\n表示文本遍历结束,进行初始化
	#	self.flag=1
	#	self.l=0

    self.ui.preview_text.setText(a)

def textshow(self):
    a=self.ui.textEdit.toPlainText()
    b=''
    for i in a:
        b=b+i+'\n'
    b=b+'\n'*40
    self.ui.preview_text.setText(b)
    self.timer.start(500)

把循环滚动的代码写了一半以后突然想起来,这个项目广告展示的时间只有3-5秒啊!根本没有等到循环滚动的时间啊!

不过写都写了……姑且还是全部做完吧,反正思路都完整了,希望能帮到别人(<ゝω·) 注释掉的就是循环部分啦

不早了0.0明天完善一下颜色和字体的设置功能就可以考虑建立服务器和客户端的连接了


C. 明日计划

PyQt5 颜色和字体的设置

汇编语言5.2


你可能感兴趣的:(170324 PyQt5-TextEdit的滚动效果)