Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用递归错误(Python,PyQt4)改善我的情况?_Python_Qt_Recursion_Pyqt - Fatal编程技术网

如何使用递归错误(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
方法。如果您需要以这种方式更新文本-
在写入之前断开
信号,然后再次连接。