2009-09-24 7 views
2

PyQt4의 텍스트 편집기에 구문 강조를 추가하려고합니다. 나는 C++에서 컴파일되었을 때 찾을 수있는 예제 문서를 찾았지만 파이썬/PyQt로 변환하면 더 이상 작동하지 않습니다.PyQt4 강조 표시

실패하지 않습니다 (더 이상 아무것도 강조) 코드의 일부는 다음과 같습니다이 작동하지 않는 이유

self.connect(self, SIGNAL('cursorPositionChanged()'), self.highlightCurrentLine) 

사람이 어떤 생각을 가지고 :에 의해

def highlightCurrentLine(self): 

    extraSelections = [] 

    if not self.isReadOnly(): 
     selection = QTextEdit.ExtraSelection() 

     lineColor = QColor(Qt.yellow).lighter(160) 

     selection.format.setBackground(lineColor) 
     selection.format.setProperty(QTextFormat.FullWidthSelection, QVariant(True)) 
     selection.cursor = self.textCursor() 
     selection.cursor.clearSelection() 
     extraSelections.append(selection) 

    self.setExtraSelections(extraSelections) 

라고하는? 내가 usuing하고

버전은 다음과 같습니다 파이썬 2.6.2, 어딘가 PyQt는 4.4.4

답변

1

Ok ... 나는 화가 나지 않았다. PyQt4의 최신 버전을 사용하고 있었다.

Ubuntu 9.04와 함께 제공되는 PyQt4의 버전은 4.4.4이지만이 기능에는 4.5+가 필요합니다.

저는 PyQt4 4.6으로 업그레이드했으며 잘 작동합니다 (4.6에도 새로운 멋진 기능이 추가 된 것 같습니다).

0

저장 lineColor (self.lineColor을 같은). 그렇지 않으면 메서드가 반환되고 format이 잘못된 포인터를 사용할 때 Python에서 개체를 삭제합니다.

+0

답장을 보내 주셔서 감사합니다. 불행히도 이것은 도움이되지 못했습니다. setBackground 메서드는 lineColor에 대한 참조를 유지해야합니다. – JonahSan

+0

아니요. Python은 포인터를 내부적으로 저장하는 C++ 메소드에 전달합니다. 반환하면 Python 부분이 삭제되고 (C++ 객체도 삭제됨) 이제 setBackground()가 잘못된 인스턴스를 가리 킵니다. –

+0

추신 : 나는 이것이 문제의 원인이 아니었지만 두려웠지만 그럼에도 불구하고 실수 다. –