2013-10-07 2 views
4

어떻게 커서 아래에 텍스트를 가져올 수 있습니까? 내가 그 위에 마우스를 올리면 "hi"라는 단어를 읽을 수 있습니까? QTextCursor.WordUnderCursor를 사용하여 무언가를해야한다고 생각하지만 실제로 무엇이 확실하지 않습니다. 어떤 도움이 필요합니까? 나는 단지 내가 그것을 볼 수 있습니다 지금 텍스트를 선택해야Pyqt : 커서 아래에 텍스트 가져 오기

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

을 :

이것은 내가 지금 작업을하려고 것입니다.

편집 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

관련 문제