tkinter 리치 텍스트 tkr 소개(1)

소개

tkinter가 Python에서 공식적으로 사용하는 GUI 라이브러리라는 것은 누구나 알고 있습니다. tkinter의 장점과 단점에 대해서는 여기서는 많이 말하지 않겠습니다. 이 칼럼에서는 tkinter 자체에 적합한 서식 있는 텍스트 형식 파일을 tkinter용으로 만들고 렌더링을 실현하기 위해 tkinter의 기본 서식 있는 텍스트 형식을 주로 논의하고 연구합니다.


tkinter가 사용할 수 있는 서식 있는 텍스트

텍스트 자체

Text 구성 요소는 Canvas 다음으로 tkinter에서 두 번째로 기능이 뛰어난 구성 요소이며 콘텐츠 레이아웃에 가장 편리한 구성 요소이기도 합니다. 텍스트는 태그, 마크 및 기타 방법을 통해 특정 서식 있는 텍스트 콘텐츠를 표시할 수 있으며 이는 tkinter 인터페이스 개발에 매우 ​​중요한 역할을 합니다. 그러나 단점도 분명합니다.

  1. 콘텐츠 렌더링도 기능적 코드에서 열악하여 사양 개발에 도움이 되지 않습니다.
  2. 메소드의 사용법은 Python의 함수 사용법과 동일하며, 표시할 내용이 복잡하면 코딩하는 방법도 매우 복잡합니다.

예를 들어, 컬러 텍스트를 표시하려면 다음을 수행하십시오.

Text.tag_config('colorred',foreground='red',background='black')
Text.insert('end','red words','colorred')

몇 개의 빨간색 텍스트를 표시하는 것만으로도 너무 많은 코드가 필요하며, 점점 더 복잡한 디스플레이에 필요한 코드의 양을 상상할 수 있습니다.

HTML

tkinter 디스플레이 HTML? 글쎄요, 전혀 괜찮습니다 .

HTML3 표시

tkhtmlview패키지를 통해서만 요. 이 패키지는 Text를 사용하여 HTML3 렌더링을 구현합니다.

pip install tkhtmlview

단점은 다음과 같습니다.

  1. 하이퍼텍스트에 서식 있는 텍스트 구성 요소를 사용하도록 선택했기 때문에 HTML3의 렌더링이 제대로 되지 않습니다.
  2. 유연성은 코드를 직접 사용하는 것만큼 좋지 않습니다.

HTML4 표시

tkinterweb패키지를 통해서만 요. 이 패키지는 TkHtml 구성 요소를 사용자 정의하여 HTML4 렌더링을 구현합니다.

pip install tkinterweb

이것은 잘 렌더링되는 것처럼 보이지만 단점이 있습니다.

  1. Python 모듈의 속도에 따라 웹페이지 다운로드가 제한되므로 속도가 느립니다.
  2. HTML4의 CSS 스타일이 거칠어 보입니다.
  3. 많은 수의 콜백 함수를 바인딩해야 합니다. 그렇지 않으면 HTML4 렌더링 효과를 얻을 수 없습니다.

HTML5 표시

tkinter에서 HTML5를 표시하려면 외부 지원이 필요합니다.

타사 패키지:

pip install tkinterie //调用系统ieframe
pip install mbpython //使用miniblink.dll,需要额外下载
pip install cefpython //使用谷歌内核

다른 방법:

작은 브라우저 창을 포함합니다 .

그중 tkinterie는 시스템에 의존하고, mbpython은 비디오를 재생할 수 없고, cefpython은 부피가 크며, 내장된 창은 구성 요소를 효과적으로 제어할 수 없습니다.

리치 텍스트 마크업 언어

tkinter에서는 리치 텍스트 마크업 언어를 작동하여 리치 텍스트 렌더링을 구현합니다.

가격 인하

패키지를 통해 Markdown을 HTML로 변환한 markdown2후 위에서 언급한 방법을 사용하여 HTML을 렌더링합니다. 현재 Markdown을 직접 렌더링하는 구성 요소나 응용 프로그램은 없습니다.

주석

Tin 마크업 언어는 제가 정의하고 만들었습니다. Tin 마크업 언어는 렌더링을 위해 TinText를 사용하며, 이는 서식 있는 텍스트 표시에 사용하거나 페이지 레이아웃을 위한 "Tinlayout"으로 사용할 수 있습니다.

주석

주석 지식 기반 .

pip install tinengine

주인공 TKR(tkinter 풍부한 형식)

tkr은 tkinter.Text 자체를 기반으로 정의된 리치 텍스트 형식인데, 이는 tkinter 고유의 것은 아니지만 Text의 스타일 설명을 통해 제안했습니다.

체재

tkr 버전은 다음과 같습니다. 1. 현재 tkr은 텍스트 내용만 설명할 수 있으며 굵은꼴, 기울임꼴 및 tag_bind와 같은 내용은 tkinter의 다른 라이브러리와 관련되어 있으므로 렌더링할 수 없습니다.

tkr 파일의 형식은 다음과 같습니다.

=tagon=
tagname1 {'background':'','bd':'0','cursor':'hand2',...}
tagname2 {...}
...
=tagoff=

=texton=
[('tagon','tagname1','1.0'),('text','words use tagname1','1.0'),('tagoff','tagname1','1.17'),...]
=textoff=

형식 설명을 통해 tkr 파일의 내용을 볼 수 있습니다. 태그 부분은 다양한 태그의 다양한 스타일을 정의하고 텍스트 부분은 텍스트 구성 요소가 내용을 렌더링하는 방법을 설명합니다.

생성 및 렌더링 방법

이 내용은 이 기사에서 논의되지 않으며 이 두 내용은 향후 기사를 위해 예약되어 있습니다.

하지만 tkr 파일의 생성과 렌더링을 초기에 완료하는 방법은 이미 알아냈습니다.

분석 생성

텍스트 사용덤프콘텐츠 설명을 얻는 방법태그_구성스타일 설명을 가져오는 방법입니다.

렌더링 방법

먼저 스타일 설명을 구문 분석한 후 텍스트 부분의 내용을 통해 하나씩 렌더링합니다.

TKR을 사용하는 이유

tkr 형식은 tkinter 자체에서 지정하는 형식으로 tkinter의 Text와 결합이 좋고 장점이 많습니다.

  1. 기본 tkinter를 기반으로 하며 일반적으로 다른 라이브러리의 지원이 필요하지 않습니다.
  2. 설명 형식을 본체로 삼아 파싱 및 렌더링에 편리합니다.
  3. HTML 렌더링보다 빠릅니다.
  4. Text 자체에 비해 tkr 파일은 손으로 직접 작성할 필요가 없기 때문에 코드 작업이 더 간결하며 분석 및 생성에 대한 자세한 내용은 향후 기사에서 설명하겠습니다.

물론 tkr에는 단점도 있습니다.

  1. 동적 콘텐츠를 설명할 수 없습니다. Tin에 비해 동적 서식 있는 텍스트 기능과 대화형 기능이 부족하고 Markdown 수준에만 도달할 수 있습니다.
  2. 텍스트가 표시할 수 있는 콘텐츠로 제한되며 현재 구성 요소를 포함할 수 없습니다.
  3. 스타일이 부족하다

분명히 위에서 언급한 모든 서식 있는 텍스트 렌더링은 tkinter에서 장점과 단점이 있지만 tkr 형식 파일의 가장 큰 장점은 tkinter에서 사용하기가 상당히 편리하다는 것입니다 .


발문

TKR 형식 파일에 대해서는 여기에 먼저 인용하고, 칼럼의 다른 기사에서는 TKR 파일에 대해 자세히 설명하겠습니다.

추천

출처blog.csdn.net/tinga_kilin/article/details/118930384