2011-04-23 3 views
3

저는 파이썬과 GTK를 사용하여 작은 도우미 응용 프로그램을 만들었습니다. 나는 전에 GTK를 사용한 적이 없다. http://www.pygtk.org/에 대한 의견에 따라 PyGObject 인터페이스를 사용했습니다.Python에서 우분투에서 PyGObject로 Gtk 맞춤법 검사하기

이제 Gtk.TextBuffer에 맞춤법 검사 기능을 추가하고 싶습니다.

패키지 관리자에서 GtkSpell 및 관련 python-gtkspell이라는 라이브러리를 찾았지만 가져 오기를 시도 할 때 "ImportError : gtk에서 이름 TextView를 가져올 수 없습니다"라는 오류가 발생합니다. PyTtk를 사용하고 있음을 의미합니다. PyGObject 대신.

PyGObject에서이 기능을 사용할 수 있습니까? 대신 다른 사전 설치 GTK 맞춤법 검사 시스템을 사용할 수 있습니까?

답변

3

나는 같은 문제가 있었기 때문에 어제 썼다. 그래서 약간 알파가되었지만 잘 동작한다. 소스를 얻을 수있는 곳 : https://github.com/koehlma/pygtkspellcheck. pyenchant이 필요하고 Archlinux의 Python 3에서만 테스트합니다. 무언가가 작동하지 않는다면 Github의 버그 보고서를 작성하십시오.

python3 setup.py install과 함께 설치해야합니다. 이 패키지는 맞춤법 검사를 수행하는 gtkspellcheckde_DE 또는 en_US과 같은 언어 코드에 대해 사람이 읽을 수있는 국제화 된 이름을 제공하는 pylocale의 두 패키지로 구성됩니다.

에는 문서가 아직 없기 때문에, 예를 들어 :

# -*- coding:utf-8 -*- 

import locale 

from gtkspellcheck import SpellChecker, languages, language_exists 
from gi.repository import Gtk as gtk 

for code, name in languages: 
    print('code: %5s, language: %s' % (code, name)) 

window = gtk.Window.new(gtk.WindowType(0)) 
view = gtk.TextView.new() 
if language_exists(locale.getdefaultlocale()[0]): 
    spellchecker = SpellChecker(view, locale.getdefaultlocale()[0]) 
else: 
    spellchecker = SpellChecker(view) 
window.set_default_size(600, 400) 
window.add(view) 
window.show_all() 
window.connect('delete-event', lambda widget, event: gtk.main_quit) 
gtk.main() 
+0

달콤한. 그래서 그것은 py2.7와 함께 작동했습니다. 나는 gtkspellcheck 가져 오기와 if else를 가져 와서 내 프로그램에 넣었습니다. setup.py는 locale.db에 대한 오류를 발견했지만, 내 프로그램 안에 gtkspellcheck 및 locale 디렉토리를 복사하는 것이 좋습니다. 또한 레코드를 바꿀 때 gtk.TextBuffer를 대체하여 버퍼 텍스트를 다시로드합니다 (왜 그렇게하는지 확신 할 수 없음). 그래서 대체 후 맞춤법 검사기를 만들고 recheck_all을 호출해야했습니다. 그래도 문제를 포함하여 끝까지 끝내야합니다. 이것을 통합하는 데 10 분이 소요됩니다. 정말 고마워요. –

+0

GtkSpell은 정말 짜증나.이 라이브러리는 훌륭해. 그래서 PyGtk로 백 포트하고 몇 가지를 추가했다 : https://github.com/koehlma/pygtkspellcheck/issues/2 – Havok

1

저는 PyGObject 인터페이스가 GtkSpell이 아직 사용하지 못하도록 충분히 새로 워진 것을 두려워합니다. 내가 아는 한 다른 사전 제작 된 GTK 맞춤법 검사기는 없습니다.