Create TOC

2010년 6월 6일

OS/X - PyQt 설치

이 문서는 Snow Leopard에서 PyQt를 설치하는 방법을 기술한다.

준비

아래 경로에서 Cocoa 버전의 QT 를 다운 받는다.

http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x

아래 경로에서 PyQt를 다운 받는다.

http://www.riverbankcomputing.co.uk/software/pyqt/download

아래 경로에서 sip를 다운 받는다.

http://www.riverbankcomputing.co.uk/software/sip/download

PyQt 빌드 및 설치

sip

우선 터미널에서 아래와 같이 sip를 빌드하고 설치한다.

$ export MACOSX_DEPLOYMENT_TARGET=10.6
$ python configure.py --universal --arch=i386 --arch=x86_64 -s MacOSX10.6.sdk
$ make
$ sudo make install

PyQt 빌드

$ export QTDIR=/Developer/Applications/Qt
$ python configure.py --confirm-license --use-arch=i386 --use-arch=x86_64
$ make
$ sudo make install

테스트

아래와 같은 python 코드를 저장하고 실행해본다

import sys
from PyQt4 import QtCore, QtGui


def translate(widgetname, defstr):
    return QtGui.QApplication.translate(widgetname, defstr)


class Sample(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(Sample, self).__init__(parent)

        self.setWindowTitle(translate(u'mainwindow', u'Sample'))
        self.resize(250, 150)
        self.setCenter()

        self.statusBar().showMessage(translate(u'mainwindow', u'Ready'))

        workarea = QtGui.QWidget(self)

        quit = QtGui.QPushButton(translate(u'mainwindow', u'Close'), workarea)
        workarea.connect(quit, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('close()'))
        quit.setToolTip(translate(u'mainwindow', u'This is a close button.'))
        QtGui.QToolTip.setFont(QtGui.QFont(u'Tahoma', 10))

        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)
        hbox.addWidget(quit)

        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)
        vbox.addLayout(hbox)
        workarea.setLayout(vbox)
        self.setCentralWidget(workarea)

    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(
            self,
            translate(u'messagebox', u'Question'),
            translate(u'messagebox', u'Are you sure to quit?'),
            QtGui.QMessageBox.Yes,
            QtGui.QMessageBox.No)

        if QtGui.QMessageBox.Yes == reply:
            event.accept()
        else:
            event.ignore()

    def setCenter(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    main = Sample()
    main.show()
    sys.exit(app.exec_())

실행하면 아래와 같은 화면이 표시된다.