2013-10-07 7 views
4

Как я могу получить текст под курсором? Так что, если я навис над ним, и слово было «привет», я мог бы это прочитать? Я думаю, что мне нужно что-то сделать с QTextCursor.WordUnderCursor, но я не совсем уверен, что. Любая помощь?Pyqt: Получить текст под курсором

Это то, что я пытаюсь работать с прямо сейчас:

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

У меня есть это выбрать текст прямо сейчас, чтобы убедиться, что я могу видеть это.

Edit 2:

То, что я действительно пытаюсь сделать, это отобразить всплывающую подсказку над определенными словами в тексте.

+0

У вас есть пример кода, чтобы продемонстрировать, что вы пробовали? –

+0

Отредактировано снова. – user2638731

+0

Так меняется ли всплывающая подсказка на основе слова внизу? Можете ли вы дать еще какой-то контекст? –

ответ

5

К сожалению, я не могу проверить это на данный момент, так что это лучшее предположение о том, что вам нужно. Это основано на некотором коде, который я написал, который имел текстовое поле, которое показывало ошибки в всплывающей подсказке, когда вы ввели, но должно работать.

У вас уже есть код для выбора слова под наведением, вам просто нужна подсказка в нужном месте.

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() до вас, чтобы заполнить как вы не описываете те, но они довольно описательные, что нужно идти туда.

Что касается вашего комментария об этом, не выбирая слово, самый простой способ сделать это - кешировать курсор перед тем, как выбрать новый, а затем установить его обратно. Вы можете сделать это, позвонив по номеру и затем установив его, как и раньше.

Как так:

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 
+0

Большое спасибо. Я отредактировал его, и он работает очень красиво; Мне просто нужно выяснить, как получить курсор, не выбрав его. Если у вас есть идеи, которые вы можете мне дать, это будет здорово. – user2638731

+0

@ user2638731 Я включил редактирование проблемы с текстовым курсором. Если ответ полезен, вы можете продемонстрировать это другим пользователям, выполнив его или приняв, щелкнув галочку рядом с ответом. –

+0

Получил! Спасибо за вашу помощь еще раз! :) – user2638731

Смежные вопросы