None:self.textEditor=ovid.textEditordefsetBoldT"/> None:self.textEditor=ovid.textEditordefsetBoldT">

 >  기사  >  백엔드 개발  >  PyQt6을 사용하여 문자 형식 전환

PyQt6을 사용하여 문자 형식 전환

PHPz
PHPz앞으로
2024-02-09 18:57:03634검색

使用 PyQt6 切换字符格式

질문 내용

저는 취미 프로젝트로 커스텀 워드 프로세서를 작성하고 있습니다. 저는 Python과 pyqt6을 사용하고 있습니다.

다음과 같이 썼습니다. 목적은 일부 텍스트를 선택하고 굵은 서식을 적용하면(예: "ctrl-b" 누르기) 서식이 전환된다는 것입니다. 특히, 선택한 텍스트가 모두 굵게 표시되어 있는 경우 굵은 서식을 제거해야 합니다. 그렇지 않으면 굵은 서식이 적용됩니다.

으아악

단, 굵은 글씨체는 제거되지 않습니다.

예를 들어 "this is a test"라는 문장에서 "is a"를 선택하고 굵은 서식을 적용하면 "this is a test"가 표시됩니다. 여기서 "is a"는 적절하게 굵게 표시됩니다. 여기서 "ctrl-b"를 누르면 여전히 굵게 표시됩니다. 첫 번째 또는 마지막 문자를 선택 취소하면 굵게 토글이 예상대로 작동합니다(if/else 논리를 반전해 보았지만 작동하지 않습니다. 역시 실패)

내가 무엇을 놓쳤나요?

업데이트: https://gist.github.com/ovid/65936985c6838c0220620cf40ba935fa에 작동하는 최소 테스트 사례를 추가했습니다.


정답


setboldtext 函数的问题在于它使用 self.texteditor.currentcharformat().fontweight() 굵은 글씨 상태를 확인하세요. 이것은 문자의 형식만 반영합니다. 선택한 전체 텍스트의 서식을 지정하는 대신 현재 커서 위치를 선택합니다. 커서가 선택 항목의 시작이나 끝 부분에 있는 경우 전체 선택 항목의 형식을 정확하게 나타내지 못할 수 있습니다.

그래서 기존 커서를 사용하여 필요에 따라 조정하여 서식을 확인하고 setfontweight()에 직접 새 글꼴 두께를 적용했습니다.

이제 다음과 같습니다.

업데이트된 코드:

으아악

위 내용은 PyQt6을 사용하여 문자 형식 전환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제