如何使用递归错误(Python,PyQt4)改善我的情况?
因此,我有一个函数,它的目标是在单词被逗号包围时给单词上色。如何使用递归错误(Python,PyQt4)改善我的情况?,python,qt,recursion,pyqt,Python,Qt,Recursion,Pyqt,因此,我有一个函数,它的目标是在单词被逗号包围时给单词上色。 def __init__(...something): ...something self.user_input = QtGui.QTextEdit(self) self.user_input.textChanged.connect(self.check_text) ...something def check_text(self): t
def __init__(...something):
...something
self.user_input = QtGui.QTextEdit(self)
self.user_input.textChanged.connect(self.check_text)
...something
def check_text(self):
text = self.user_input.toPlainText().strip()
comma = ","
if comma in text:
elements_quantity = text.count(comma)
sites = text.split(comma)
sites_quantity = len(sites)
done_sites = []
if sites_quantity > elements_quantity:
done_sites = sites[:elements_quantity]
else:
done_sites = sites
else:
done_sites = [""]
for site in done_sites:
new_site = "<strong>{site}</strong>"
text = text.replace(site, new_site.format(site=site))
self.user_input.setHtml(text)
self.user_input.moveCursor(QtGui.QTextCursor.End)
def\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
某物
self.user_input=QtGui.QTextEdit(self)
self.user\u input.textChanged.connect(self.check\u text)
某物
def检查_文本(自身):
text=self.user\u input.toPlainText().strip()
逗号=“,”
如果文本中有逗号:
元素数量=文本计数(逗号)
站点=文本。拆分(逗号)
站点数量=len(站点)
完成站点=[]
如果站点数量>元素数量:
完成\站点=站点[:元素\数量]
其他:
完成站点=站点
其他:
已完成\u站点=[“”]
对于已完成站点中的站点:
新建站点=“{site}”
text=text.replace(site,new_site.format(site=site))
self.user_input.setHtml(文本)
self.user\u input.moveCursor(QtGui.QTextCursor.End)
而且,当我开始编写时,递归错误:在每次编写符号时调用Python对象时超过了最大递归深度。
我应该做些什么来改进它?当你试图更改文本时,只需阻止信号
self.blockSignal(True)
self.user_input.setHtml(text)
self.user_input.moveCursor(QtGui.QTextCursor.End)
self.blockSignal(False)
您不应该在
check\u text
中更新user\u input
,因为每次调用setHtml
(或moveCursor
)时,它都会发出“textChanged”信号,并且您再次使用刚才编辑的文本进入check\u text
方法。如果您需要以这种方式更新文本-在写入之前断开
信号,然后再次连接。