pyside : 基本的な使い方

Last Change: 15-Mar-2016.
author : qh73xe

このページには基本的な pyside の使用方法に関してメモしておきます.

とりあえず使ってみる

pyside の hello world です.

#!/usr/bin/env python
# -*- coding: utf-8 -*
"""
| Last Change: 25-Nov-2014.
| author : qh73xe
"""

import sys
from PySide.QtCore import *
from PySide.QtGui import *
 
 
# Create a Qt application
app = QApplication(sys.argv)
# Create a Label and show it
label = QLabel("Hello World")
label.show()
# Enter Qt application main loop
app.exec_()
sys.exit()

Pyside でアプリケーションを作成する場合,とりあえず2つのライブラリを読み込みます.

  • PySide.QtCore : Pyside 内部のウィジェットの操作
  • PySide.QtGui : シグナルとスロットの処理,アプリケーション制御

Qt のメインアプリケーションは app = QApplication(sys.argv) の部分で読み込んでい ます.ここでは Qt にコマンドライン引数をすべて渡せるようにしています. とりあえず,ここはオマジナイ的なものです.

アプリケーションのウェジェットとして QLabel を使用しています. これはテキストと画像を表示するウェジェットです.

注釈

QLabel に関して

QLabel 関数は HTML タグを引数に受け取ることが可能です. 例えば上記のスクリプトの記述を以下のように変更することができます.:

label = QLabel('<font color=blue>Hello World</font>')

ウィジェットを指定したあとには show メゾットを使用します. これで label を表示することになります.

最後に app.exec_() とすることで app を実行しています.

ウィジェットについて

私自身は基本的に GUI アプリケーションを作成することを職業にしているわけではない ので正直,どういうものがあるのかイマイチ勘が働かない状態です. とりあえず wikipedia に書かれているものが使えれば後で色々考えればよいかなと思っています.

選択

  • ボタン : QtGui.QPushButton()
  • チェックボックス : QtGui.QCheckBox()
  • ラジオボタン : QtGui.QRadioButton()
  • スライダー : QtGui.QSlider()

テキスト入力

  • テキストボックス : QLineEdit()

  • コンボボックス : QtGui.QComboBox()
    • リストの追加 : addItems メゾットを使用

exe ファイル化

windows ユーザー用にスクリプトを組んでいる際には, 相手のPC に python が入っているとは限りません. というか,一般にwindows ユーザーは端末操作に慣れていない場合が多いのでできれば,exe ファイル化してスクリプトをわたしてしまいたい場合が多いかと思います.

このような場合だと cxfreeze を使用するのが便利です.

例えば作成したスクリプトが app.py であった場合以下のコマンドでexe化できます.

$ cxfreeze app.py --target-dir dist --base-name Win32GUI --include-modules atexit
  • –target-dir : 出力先のディレクトリ名
  • –include-modules atexit : pyside で使用するモジュールを埋め込む

注釈

cx_Freez の導入方法

上記のコマンドは cx_Freez ライブラリを導入する必要があります. これは pip コマンドから導入可能です.

まだ,windows 環境で上記のコマンドを使用しようとすると,何もしない状態では実行ファイルとして扱ってくれません. この問題を解決するためには以下の作業を行う必要があります. この作業はコマンドプロンプト上で行います.

  • C:Python27Scripts に移動
    • python のバーションに合わせてください.
  • cxfreez-postinstall を実行
    • python cxfreez-posrinstall です