- PyGTK로 간단한 그래픽 에디터 만들기

그래픽 에디터는 이미지를 만들거나 수정하는 도구로 많이 사용됩니다. 이번 튜토리얼에서는 Python과 PyGTK를 사용하여 간단한 그래픽 에디터를 만드는 방법을 알아보겠습니다.

필요한 라이브러리 설치하기

먼저, 그래픽 에디터를 만들기 위해 PyGTK 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 PyGTK를 설치할 수 있습니다:

pip install pygtk

그래픽 에디터 창 만들기

다음으로, PyGTK에서 정의된 gtk 클래스를 이용하여 그래픽 에디터 창을 만들어보겠습니다. 다음 코드를 참고하여 MainWindow 클래스를 생성합니다:

import gtk

class MainWindow(gtk.Window):
    def __init__(self):
        gtk.Window.__init__(self)
        self.set_default_size(800, 600)
        self.connect("destroy", gtk.main_quit)

        self.canvas = gtk.DrawingArea()
        self.add(self.canvas)

        self.show_all()

if __name__ == "__main__":
    window = MainWindow()
    gtk.main()

위 코드에서 MainWindow 클래스는 gtk.Window를 상속받아 창을 생성하고, destroy 시그널에 연결하여 창이 닫힐 때 종료되도록 설정합니다. 또한, gtk.DrawingArea를 생성하여 캔버스로 사용합니다.

그래픽 그리기

그래픽 에디터에서는 다양한 그리기 도구를 사용하여 그림을 그릴 수 있어야 합니다. 다음은 기본적인 그리기 도구들을 구현한 예제 코드입니다:

import gtk
import cairo

class DrawingArea(gtk.DrawingArea):
    def __init__(self):
        gtk.DrawingArea.__init__(self)
        self.connect("expose-event", self.on_expose)

    def on_expose(self, widget, event):
        cr = widget.window.cairo_create()

        # 선 그리기
        cr.set_source_rgb(0, 0, 0)
        cr.set_line_width(2.0)
        cr.move_to(50, 50)
        cr.line_to(150, 150)
        cr.stroke()

        # 원 그리기
        cr.arc(200, 200, 50, 0, 2 * math.pi)
        cr.stroke()

if __name__ == "__main__":
    window = gtk.Window()
    drawing_area = DrawingArea()
    window.add(drawing_area)
    window.set_default_size(600, 400)
    window.connect("destroy", gtk.main_quit)
    window.show_all()
    gtk.main()

위 코드에서 DrawingArea 클래스는 gtk.DrawingArea를 상속받아 새로운 그리기 영역을 생성하고, expose-event 시그널에 연결하여 그래픽을 그리는 작업을 수행합니다. 예제 코드에서는 cairo 라이브러리를 사용하여 주어진 좌표를 기반으로 선과 원을 그리는 방법을 보여줍니다.

결론

이번 튜토리얼에서는 PyGTK를 사용하여 간단한 그래픽 에디터를 만드는 방법을 알아보았습니다. PyGTK를 활용하면 다양한 그래픽 기능을 간편하게 구현할 수 있습니다. 추가적인 기능을 구현하거나 사용자 인터페이스를 개선하여 더 복잡한 그래픽 에디터를 개발할 수도 있습니다. #Python #PyGTK #그래픽에디터