我正在用PyQt4
到^{
from PyQt4 import QtCore, QtGui
import time,sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from pygments import highlight
from pygments.lexers import PythonLexer,get_lexer_by_name
from pygments.formatters import HtmlFormatter
def highlighter():
text = area.toPlainText()
result = highlight(text, lexer, formatter)
area.setText(result)
code = 'print ("Hello World")\n# Test Program'
lexer = get_lexer_by_name("python3", stripall=True)
formatter = HtmlFormatter(linenos=False,style='colorful')
formatter.noclasses = True
result = highlight(code, lexer, formatter)
app = QApplication(sys.argv)
w=QWidget()
w.setGeometry(500,400,350,350)
area = QTextEdit(w)
area.setGeometry(0,10,350,340)
area.setText(result)
area.textChanged.connect(highlighter)
w.show()
sys.exit(app.exec_())
当它第一次加载时,它输出正确,但如果我在QTextEdit
中键入一个单词,它将等待1-2秒并显示以下错误:
做了很多事情我都忍不住了。我不知道我哪里做错了。请帮帮我。在
您的},后者。。。等等。在
highlighter()
函数调用area.setText()
,它将发出textChanged
信号,该信号连接到highlighter
,后者调用{对于
QTextEdit
,当调用setText()
方法时,textChaged
信号始终会发出,即使可见文本内容实际上没有更改,因为其内部表示形式确实发生了更改。在在您的情况下,一个简单的解决方法是在调用
setText()
时阻止信号的传递:相关问题 更多 >
编程相关推荐