1
작은 응용 프로그램에 코드 완성을 추가하고 싶습니다. 내 소스보기에 완료 객체에 추가하지만 불행히도 뭔가가 작동하지 않는, 내 완료 제공자를 만들어 : P를 내가 (아래) 내 테스트 응용 프로그램 I 오류 얻을 실행하면 :gtksourceview2.CompletionProvider를 구현하는 방법은 무엇입니까?
app = Application()
File "./test.py", line 37, in __init__
self.__completion_window.show()
TypeError: providers must be a list
을 이런 일이 왜 그리고 어떻게 고칠 수 있을까요? 당신이 모두 구현해야
#!/usr/bin/env python
import keyword
import gtk
import gobject
import gtksourceview2
class MyCompletionProvider(gobject.GObject, gtksourceview2.CompletionProvider):
def __init__(self):
gobject.GObject.__init__(self)
def do_get_name(self):
return 'PythonKeywords'
def do_get_activation(self):
return gtksourceview2.COMPLETION_ACTIVATION_USER_REQUESTED
def do_match(self, context):
return True
def do_get_start_iter(self, context):
return context.get_iter()
def do_activate_proposal(self, proposal, iter):
return True
def do_populate(self, context):
self.completions = []
for compl in keyword.kwlist:
self.completions.append(
gtksourceview2.CompletionItem(
compl.name, compl.complete, info=compl.type))
context.add_proposals(self, self.completions, True)
gobject.type_register(MyCompletionProvider)
class Application(gtk.Window):
def __init__(self):
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
self.connect('destroy', lambda e: gtk.main_quit())
self.set_size_request(640, 480)
self.__buffer = gtksourceview2.Buffer()
self.__buffer.set_text('a' * 20)
self.__editor = gtksourceview2.View(self.__buffer)
self.__completion_window = self.__editor.get_completion()
self.__completion_window.add_provider(MyCompletionProvider())
self.add(self.__editor)
self.show_all()
self.__completion_window.show()
app = Application()
gtk.main()
안녕하세요, 내 질문을 밖으로 파고 들었습니다. :) 내 코드에 아이디어를 적용했지만 불행히도 오류가 변경되지 않았습니다. 업데이트 된 예제 응용 프로그램으로 내 게시물을 편집했습니다. 시간과 아이디어가 있다면 기꺼이 테스트 해보십시오 :) – BPS