2015/04/24

Hello PyQt5

新しい言語を勉強する時は、”Hello World”を出力するのがお約束になっていますが、入門Qt4プログラミング(オライリー・ジャパン)も同様のようです。

import sys

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLabel

if __name__ == '__main__':
    app = QApplication(sys.argv)

    label = QLabel('Hello Qt5!')
    label.show()

    sys.exit(app.exec_())


3~4行目でQApplicationとQLabelをインポートしていますが、どうやらQt4とQt5はパッケージの構成が異なるようです。

7行目、QApplicationをインスタンス化します。
ここでは、コマンドライン引数が必要になるため、パラメータとして sys.argv を指定します。

9行目、QLabel をインスタンス化します。
QLabel は、テキストまたはイメージの表示を行うウィジェットです。
Qtではユーザが操作するユーザインターフェース要素のことをウィジェットと言うんだそうです。
(Unixもそうらしいです、勉強になりますね♪)
QLabelをインスタンス化する際のパラメータとして’Hello Qt5!’を指定しています。
これが表示する文字列ですね。

10行目、ここでラベルを表示状態にします。
Qtではウィジェットは常に非表示の状態で生成されるので、インスタンス化が終わったら表示させます。

12行目、制御をQtに渡します。
これによってアプリはイベントループに入り、ユーザからの操作を待つということですね。

ウィジェットは単体でもウィンドウとして機能するようで、今回のようにラベルだけをウィンドウとしてアプリ実行することができます。
なんて便利なんでしょう♪



上のサンプルでは、QLabelのインスタンス化時に’Hello Qt5!’という文字列を指定していますが、HTMLも指定可能だそうです。

    label = QLabel('<h2><i>Hello</i> <span style="color: red;">Qt5!</span></h2>')



画像も出力させるには以下のようになります。

import sys

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLabel
from PyQt5.QtGui import QPixmap

if __name__ == '__main__':
    app = QApplication(sys.argv)

    label = QLabel()
    label.setPixmap(QPixmap("[画像ファイルパス]"))
    label.show()

    sys.exit(app.exec_())

QLabelウィジェットを引数なしでインスタンス化し、setPixmapメソッドで画像データを指定することで可能になります。



GUIがお手軽にできていいですね♪