다음과 같이 gtk 위젯을 만들었다 고 가정 해보십시오.
class AwesomeTextView (gtk.TextView):
def set_font(self, font_description):
self.modify_font(pango.FontDescription(font_description))
Glade Interface Builder에서 팔레트에 새 위젯을 추가하려면 어떻게해야합니까?
답변
좋아, 이것은 단계적으로 될 것입니다 :
- 우리의 위젯은으로 명명 될 것이고
AwesomeTextView
, 그것의 모듈은로 불릴 것awesome_text_view
입니다. 이것들이 우리에게 필요한 유일한 이름입니다.
glade 위젯은 모듈과 카탈로그의 두 부분으로 구성됩니다.
-
우리는 카탈로그를 만들고,
awesome_text_view.xml
루트로 저장합니다./usr/share/glade3/catalogs/
이것은 다음과 같습니다
<glade-catalog name="awesome_text_view" library="gladepython" domain="glade-3" depends="gtk+"> <init-function>glade_python_init</init-function> <glade-widget-classes> <glade-widget-class title="Awesome TextView" name="AwesomeTextView" generic-name="awesome_text_view"/> </glade-widget-classes> <glade-widget-group name="python" title="Python"> <glade-widget-class-ref name="AwesomeTextView"/> </glade-widget-group> </glade-catalog>
이 템플릿이 작동하는 대로 복사하고 수정해야 합니다 . 🙂
-
우리는 모듈을 만들고,
awesome_text_view.py
루트로 다시 저장합니다./usr/lib/glade3/modules/
그 모습은 다음과 같습니다.
import gobject import gtk import pango class AwesomeTextView (gtk.TextView): __gtype_name__ = 'AwesomeTextView' def __init__(self): gtk.TextView.__init__(self) def set_font(self, font_description): self.modify_font(pango.FontDescription(font_description))
이제 Glade에 표시되며 응용 프로그램에 추가 할 수 있습니다.
-
마지막으로, 당신은 단지
export PYTHONPATH="$PYTHONPATH:/usr/lib/glade3/modules/"
그게 다야!
위젯 사용 방법을 보여주는 작은 테스트 앱이 있습니다.
import gtk
import awesome_text_view
class App (object):
builder = gtk.Builder()
def __init__(self):
self.builder.add_from_file("test.glade")
self.builder.connect_signals(self)
self.builder.get_object("awesome_text_view1").set_font("mono")
gtk.main()
def on_window1_destroy(self, widget):
gtk.main_quit()
App()
답변
위젯에 대한 카탈로그를 작성하고이 폴더를 참조하십시오. /usr/share/glade3/catalogs/
그러면 gnome.xml
, 예제를 살펴보십시오.
그놈 문서도 참조하십시오 :