Pyqt:获取光标下的文本

7

我如何获取光标下的文本?如果我将光标悬停在上面,单词是“hi”,我能读到它吗?我认为我需要使用QTextCursor.WordUnderCursor,但我不太确定该怎么做。有什么帮助吗?

这是我现在正在尝试处理的内容:

    textCursor = text.cursorForPosition(event.pos());
    textCursor.select(QTextCursor.WordUnderCursor);
    text.setTextCursor(textCursor);
    word = textCursor.selectedText();

我现在正在选择文本,只是为了看到它。

编辑2:

我真正想做的是在文字中的某些单词上显示工具提示。


你有一些示例代码来展示你尝试过的吗? - user764357
那么提示工具根据下面的单词改变吗?你能给一些更多的上下文吗? - user764357
是的,如果它匹配单词列表中的一个单词,我需要为每个单词显示特定的工具提示。我只是在工具提示部分遇到了问题。谢谢。 - user2638731
1个回答

8

很抱歉,目前我无法进行测试,因此以下是我对您需求的最佳猜测。这是基于我编写的一些代码,其中包含一个文本字段,可以在您输入时显示提示中的错误,但应该可以工作。

您已经有了选择悬停单词的代码,您只需要将提示放在正确的位置即可。

textCursor = text.cursorForPosition(event.pos())
textCursor.select(QTextCursor.WordUnderCursor)
text.setTextCursor(textCursor)
word = textCursor.selectedText()

if meetsSomeCondition(word):
    toolTipText = toolTipFromWord(word)
    # Put the hover over in an easy to read spot
    pos = text.cursorRect(text.textCursor()).bottomRight()
    # The pos could also be set to event.pos() if you want it directly under the mouse
    pos = text.mapToGlobal(pos)
    QtGui.QToolTip.showText(pos,toolTipText)

我把meetsSomeCondition()toolTipFromWord()留给你填写,因为你没有描述它们,但是它们的名称已经相当描述性了。

关于你在不选择单词的情况下完成此操作的评论,最简单的方法是在选择新光标之前缓存光标,然后将其设置回去。您可以通过调用QTextEdit.textCursor()并像以前一样设置它来实现这一点。

就像这样:

oldCur = text.textCursor()
textCursor.select(QTextCursor.WordUnderCursor) # line from above
text.setTextCursor(textCursor)                 # line from above
word = textCursor.selectedText()               # line from above
text.setTextCursor(oldCur)

# if condition as above

非常感谢。我已经编辑过了,现在它运行的非常好;我只需要找出一种不选中单词却能获取光标所在单词的方法。如果您有任何想法,请告诉我,谢谢。 - user2638731
@user2638731 我已经为文本光标问题提供了修改。如果答案有帮助,您可以通过点击答案旁边的勾号进行点赞或接受它来向其他用户展示这一点。 - user764357
明白了!再次感谢您的帮助! :) - user2638731

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接