pyqt html编辑器,Pyqt中富文本编辑器

对于文本编辑,qt提供了很多控件

QLineEdit:单行文本输入,比如用户名密码等简单的较短的或者具有单一特征的字符串内容输入。使用text、settext读写

QTextEdit:富文本编辑器,支持html显示,可以用sethtml/tohtml进行html文本操作或使用,也可利用setPlainText、toPlainText进行纯文本操作

QPlainTextEdit:纯文本编辑器,使用了近似于textedit的技术并做了纯文本编辑的优化,并具有文章段落的概念也提供了撤销等功能,但不支持html显示。

QTextBrowser:继承于QTextEdit,仅提供显示功能,并提供了超文本导航功能,如果不需要超文本连接只需要使用QTextEdit并设置QTextEdit::setReadOnly

上述都是显示控件,可以确定的是富文本编辑器要用QTextEdit或者QPlainTextEdit,但是肯定不能主动撰写html代码或者逐个处理显示格式实现富文本,实际上Qt提供了相关类:QTextDocument富文本文档、QTextBlock文本快、QTextFrame框架、QTextTable表格、QTextList列表、QTextCursor指针位置、QTextXXXXFormat各种数据类型样式。对于富文本的所有帮助请见官方文档:Rich Text Processing

QTextEdit和QPlainTextEdit选择:差异是QTextEdit提供了tohtml,如果想在处理完文档,直接根据文档生成html作为博客等内容,可以使用此类,没有需要后者即可

注意关系:QTextDocument>QTextFrame>QTextBlock/QTextTable/QTextList前包含后

查看两个类的api,均提供了document方法,可以返回QTextDocument指针,用于通过QTextDocument的方式操作文档内容格式,官方范例:

Calendar Example利用富文本编辑器的方式实现日历(不建议学这个毕竟已经有现成的日历控件,而且文档中往往也不会插入日历)

Order Form Example根据一些的参数设置生成报表,其实和上面的原理一样

基本使用

import sys

from PyQt4.QtGui import *

from PyQt4.QtCore import *

class Calculate(QDialog):

def __init__(self,parent=None):

super(Calculate,self).__init__(parent)

self.browser = QTextBrowser()

self.browser.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)

self.line_edit = QLineEdit('Type an expression an press Enter')

self.line_edit.setFocusPolicy(Qt.StrongFocus)

self.line_edit.selectAll()

layout = QVBoxLayout()

layout.addWidget(self.browser)

layout.addWidget(self.line_edit)

self.setLayout(layout)

self.setWindowTitle('Calculate')

self.connect(self.line_edit,SIGNAL('returnPressed ()'),self.update_ui)

def update_ui(self):

try:

line_text = unicode(self.line_edit.text())

self.browser.append('%s = %s' %(line_text,eval(line_text)))

except:

self.browser.append('%s is invalid!' %(line_text))

self.line_edit.selectAll()

if __name__ == "__main__":

app = QApplication(sys.argv)

cal = Calculate()

cal.show()

sys.exit(app.exec_())

参考文档:https://www.techieliang.com/2017/12/726/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值