在Ubuntu上使用PyGObject进行Python的Gtk拼写检查
我用Python和GTK做了一个小助手应用,但我之前从没用过GTK。根据http://www.pygtk.org/上的评论,我使用了PyGObject这个接口。
现在我想给我的Gtk.TextBuffer加个拼写检查功能。
我找到一个叫GtkSpell的库,还有一个相关的python-gtkspell在包管理器里,但当我尝试导入时,出现了“ImportError: cannot import name TextView from gtk”的错误。我猜这意味着它在用PyGtk,而不是PyGObject。
有没有办法让它和PyGObject一起工作?或者有没有其他现成的GTK拼写检查系统可以用?
2 个回答
1
我担心PyGObject这个接口比较新,所以GtkSpell还没有更新来使用它。根据我所知道的,似乎没有其他现成的GTK拼写检查工具。
4
我昨天写了一个,因为我也遇到了同样的问题,所以现在这个版本还不太成熟,但运行得很好。你可以从这里获取源代码:https://github.com/koehlma/pygtkspellcheck。它需要用到pyenchant,我只在Archlinux上用Python 3测试过。如果有什么不对的地方,欢迎在Github上提交bug报告。
你需要通过 python3 setup.py install
来安装它。这个项目包含两个部分,gtkspellcheck
是用来检查拼写的,pylocale
则提供了人类可读的国际化语言代码名称,比如 de_DE
(德语)或 en_US
(美式英语)。
因为现在还没有文档,所以我给你一个例子:
# -*- 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()