UbuntuPyQtHowto

깊이있는 삽질 Ubuntu Korea Community Wiki
이동: 둘러보기, 검색

소개[편집]

pyqt는 가장 대표적인 크로스 프레임워크인 Qt와 파이썬을 결합한 프로젝트이다. 개념적으로는 Qt를 파이썬에 접목시키는것이다. Qt보다 파이썬에 대해서 어느정도 지식을 가지고 있어야한다.



pycharm[편집]

http://www.jetbrains.com/pycharm/


파이썬용 IDE이다. 파이썬은 특성상 단순히 터미널에서도 사용이 가능하고, 지니라는 IDE가 존재한다. 그렇지만, 가장 편하게 사용할수 있는 IDE로서 pycharm을 추천한다.



설치방법[편집]

JDK 설치[편집]

우분투는 기본적으로 python이 설치되어 있다. pycharm에서는 jdk를 요구하기에 jdk를 먼저 설치해준다. 사실은 jdk같은것은 필수로 설치하지만, 혹시나 해서

 $sudo apt-get install openjdk-7-jdk

pycharm 설치[편집]

pycharm사이트에서 Community Edition을 다운로드 받는다. 다운로드파일은 압축파일인데, 압축파일의 압출을 풀어주면 pycharm-community-x.x.x 디렉토리가 생성될것이다. 아래의 명령으로 설치를 해주자. 이후의 과정들은 간단하므로 메세지에 따라서 설치만 해주면 된다.

 $sudo pycharm-community-x.x.x/bin/pycharm.sh


Qt설치[편집]

우분투 소프트웨어 센터를 통해서, Qt를 설치한다. Qt는 일종의 GUI프레임워크로서 JAVA와 같이 개발을 위해서 여러가지 Qt를 이루고 있는 툴들이 필요하다. 사실은 오래전에 개발환경 세팅을 끝내서 정확한 패키지가 기억이 안난다. Qt4를 기준으로 현재 작성자의 컴퓨터의 Qt의 패키지들을 참조하기를 바란다.

cobi@cobi-CR643:~$ dpkg --list |grep qt
ii  appmenu-qt                             0.2.6-0ubuntu1                                      appmenu support for Qt
ii  checkbox-qt                            0.13.10                                             QT4 interface for checkbox
ii  gambas2-gb-qt                          2.23.1-1ubuntu3                                     The Gambas Qt GUI component
ii  libdbusmenu-qt2                        0.9.2-0ubuntu1                                      Qt implementation of the DBusMenu protocol
ii  libdconf-qt0                           0.0.0.110722-0ubuntu4                               dconf Qt bindings (library)
ii  libntrack-qt4-1                        016-1ubuntu1                                        Qt 4 API for ntrack
ii  libpolkit-qt-1-1                       0.103.0-1                                           PolicyKit-qt-1 library
ii  libqt3-mt                              3:3.3.8-b-8ubuntu3                                  Qt GUI Library (Threaded runtime version), Version 3
ii  libqt4-dbus                            4:4.8.1-0ubuntu4.8                                  Qt 4 D-Bus module
ii  libqt4-dbus:i386                       4:4.8.1-0ubuntu4.8                                  Qt 4 D-Bus module
ii  libqt4-declarative                     4:4.8.1-0ubuntu4.8                                  Qt 4 Declarative module
ii  libqt4-declarative:i386                4:4.8.1-0ubuntu4.8                                  Qt 4 Declarative module
ii  libqt4-declarative-gestures            4:4.8.1-0ubuntu4.8                                  Qt 4 gestures QML plugin
ii  libqt4-declarative-particles           4:4.8.1-0ubuntu4.8                                  Qt 4 particles QML plugin
ii  libqt4-designer                        4:4.8.1-0ubuntu4.8                                  Qt 4 designer module
ii  libqt4-designer:i386                   4:4.8.1-0ubuntu4.8                                  Qt 4 designer module
ii  libqt4-dev                             4:4.8.1-0ubuntu4.8                                  Qt 4 development files
ii  libqt4-help                            4:4.8.1-0ubuntu4.8                                  Qt 4 help module
ii  libqt4-network                         4:4.8.1-0ubuntu4.8                                  Qt 4 network module
ii  libqt4-network:i386                    4:4.8.1-0ubuntu4.8                                  Qt 4 network module
ii  libqt4-opengl                          4:4.8.1-0ubuntu4.8                                  Qt 4 OpenGL module
ii  libqt4-opengl:i386                     4:4.8.1-0ubuntu4.8                                  Qt 4 OpenGL module
ii  libqt4-opengl-dev                      4:4.8.1-0ubuntu4.8                                  Qt 4 OpenGL library development files
ii  libqt4-qt3support                      4:4.8.1-0ubuntu4.8                                  Qt 3 compatibility library for Qt 4
ii  libqt4-qt3support:i386                 4:4.8.1-0ubuntu4.8                                  Qt 3 compatibility library for Qt 4
ii  libqt4-script                          4:4.8.1-0ubuntu4.8                                  Qt 4 script module
ii  libqt4-script:i386                     4:4.8.1-0ubuntu4.8                                  Qt 4 script module
ii  libqt4-scripttools                     4:4.8.1-0ubuntu4.8                                  Qt 4 script tools module
ii  libqt4-scripttools:i386                4:4.8.1-0ubuntu4.8                                  Qt 4 script tools module
ii  libqt4-sql                             4:4.8.1-0ubuntu4.8                                  Qt 4 SQL module
ii  libqt4-sql:i386                        4:4.8.1-0ubuntu4.8                                  Qt 4 SQL module
ii  libqt4-sql-mysql:i386                  4:4.8.1-0ubuntu4.8                                  Qt 4 MySQL database driver
ii  libqt4-sql-sqlite                      4:4.8.1-0ubuntu4.8                                  Qt 4 SQLite 3 database driver
ii  libqt4-svg                             4:4.8.1-0ubuntu4.8                                  Qt 4 SVG module
ii  libqt4-svg:i386                        4:4.8.1-0ubuntu4.8                                  Qt 4 SVG module
ii  libqt4-test                            4:4.8.1-0ubuntu4.8                                  Qt 4 test module
ii  libqt4-test:i386                       4:4.8.1-0ubuntu4.8                                  Qt 4 test module
ii  libqt4-xml                             4:4.8.1-0ubuntu4.8                                  Qt 4 XML module
ii  libqt4-xml:i386                        4:4.8.1-0ubuntu4.8                                  Qt 4 XML module
ii  libqt4-xmlpatterns                     4:4.8.1-0ubuntu4.8                                  Qt 4 XML patterns module
ii  libqt4-xmlpatterns:i386                4:4.8.1-0ubuntu4.8                                  Qt 4 XML patterns module
ii  libqtassistantclient4                  4.6.3-3ubuntu2                                      Qt Assistant client library (runtime)
ii  libqtbamf1                             0.2.4-0ubuntu1                                      Qt binding and QML plugin for bamf - shared library
ii  libqtcore4                             4:4.8.1-0ubuntu4.8                                  Qt 4 core module
ii  libqtcore4:i386                        4:4.8.1-0ubuntu4.8                                  Qt 4 core module
ii  libqtdee2                              0.2.4-0ubuntu1                                      Qt binding and QML plugin for Dee - shared library
ii  libqtgconf1                            0.1-0ubuntu5                                        Qt binding and QML plugin for GConf - shared library
ii  libqtgui4                              4:4.8.1-0ubuntu4.8                                  Qt 4 GUI module
ii  libqtgui4:i386                         4:4.8.1-0ubuntu4.8                                  Qt 4 GUI module
ii  libqtwebkit-dev                        2.2.1-1ubuntu4                                      Web content engine library for Qt - development files
ii  libqtwebkit4                           2.2.1-1ubuntu4                                      Web content engine library for Qt
ii  libqtwebkit4:i386                      2.2.1-1ubuntu4                                      Web content engine library for Qt
ii  pyqt4-dev-tools                        4.9.1-2ubuntu1                                      Development tools for PyQt4
ii  python-qt4                             4.9.1-2ubuntu1                                      Python bindings for Qt4
ii  qt-at-spi                              0.2.0+git20120411-0ubuntu1                          accessibility plugin for Qt
ii  qt4-demos                              4:4.8.1-0ubuntu4.8                                  Qt 4 examples and demos
ii  qt4-designer                           4:4.8.1-0ubuntu4.8                                  graphical designer for Qt 4 applications
ii  qt4-dev-tools                          4:4.8.1-0ubuntu4.8                                  Qt 4 development tools
ii  qt4-doc                                4:4.8.1-0ubuntu4.8                                  Qt 4 API documentation
ii  qt4-linguist-tools                     4:4.8.1-0ubuntu4.8                                  Qt 4 Linguist tools
ii  qt4-qmake                              4:4.8.1-0ubuntu4.8                                  Qt 4 qmake Makefile generator tool
ii  qt4-qmlviewer                          4:4.8.1-0ubuntu4.8                                  Qt 4 QML viewer
ii  qtcreator                              2.4.1-0ubuntu2                                      lightweight integrated development environment (IDE) for Qt
ii  qtcreator-doc                          2.4.1-0ubuntu2                                      documentation for Qt Creator IDE
ii  sni-qt                                 0.2.5-0ubuntu3                                      indicator support for Qt


Qt-Desginer [XML form][편집]

xml은 마크업언어로서 Qt의 form을 작성할때도 사용되는 언어이다. Qt-Desginer를 실행시켜서 *.ui파일을 만들자. ui파일은 xml형식으로 되어있다. pyuic4를 이용하여 *.ui 파일을 파이썬이 인식이 가능한 *.py파일로 전환한다. 생성된 *.py파일은 xml에 따라서 클래스를 생성한다.

pyuic4 *.ui > *.py


python[편집]

파이썬 코드를 생성한다. 이전에 생성된 *.py파일과 클래스를 import하는것이 중요하다. 사용되는 파일명은 pyqt_test.py 클래스는 Ui_Form이다. 파일명은 start.py이다.

start.py
import sys
from PyQt4 import QtCore, QtGui
from pyqt_test import Ui_Form

class StartQT4(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = StartQT4()
    myapp.show()
    sys.exit(app.exec_())

실행[편집]

이제 실행만 해주면 된다.

 $python ./start.py


etc[편집]

Makefile[편집]

Makefile을 사용하면 명령보다 효율적일수도 있다. 예를 들면 다음과 같다.

all:
	pyuic4 test.ui > test_ui.py

예제소스[편집]

http://wiki.ubuntu-kr.org/images/5/5b/Pyqt_ex.zip

참고사이트[편집]

https://wiki.python.org/moin/JonathanGardnerPyQtTutorial

http://www.rkblog.rk.edu.pl/w/p/introduction-pyqt4/

http://qt-project.org/wiki/Category:LanguageBindings::PySide