【问题标题】:QTextEdit.find() doesn't work in PythonQTextEdit.find() 在 Python 中不起作用
【发布时间】:2011-07-06 07:44:06
【问题描述】:

演示问题的简单代码:

#!/usr/bin/env python

import sys
from PyQt4.QtCore import QObject, SIGNAL
from PyQt4.QtGui import QApplication, QTextEdit

app = QApplication(sys.argv)

def findText():
    print(textEdit.find('A'))

textEdit = QTextEdit()
textEdit.show()
QObject.connect(textEdit, SIGNAL('textChanged()'), findText)
sys.exit(app.exec_())

在窗口中输入“A”后,find('A') 仍然返回 False

问题出在哪里?

【问题讨论】:

    标签: python qt qt4 pyqt4 qtextedit


    【解决方案1】:

    问题是光标在窗口中的位置。

    默认情况下 - 除非您指定将某些 flags 传递给 find() 函数,否则搜索只会发生向前(=从光标位置开始)。

    为了使你的测试工作,你应该做这样的事情:

    1. 运行程序。
    2. 转到窗口并输入BA
    3. 将光标移动到行首
    4. 输入C

    这样您将在窗口中看到字符串CBA,光标在CB 之间,find() 方法将返回True 的字符串将是BA

    或者,您可以测试设置了后向标志的其他版本的代码。

    #!/usr/bin/env python
    # -*- coding: utf-8  -*-
    
    import sys
    from PyQt4.QtCore import QObject, SIGNAL
    from PyQt4.QtGui import QApplication, QTextEdit, QTextDocument
    
    app = QApplication(sys.argv)
    
    def findText():
        flag = QTextDocument.FindBackward
        print(textEdit.toPlainText(), textEdit.find('A', flag))
    
    textEdit = QTextEdit()
    textEdit.show()
    QObject.connect(textEdit, SIGNAL('textChanged()'), findText)
    sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 2012-06-07
      • 1970-01-01
      • 2017-09-08
      • 2021-01-06
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多