PySideで動くもの作るまでに詰まったところのメモ

環境

  • windows7 64bit
  • Python 3.3.2 (32bit)
  • cx_Freeze 4.3.2
  • pip 1.5.4
  • PySide 1.2.1

パス

以降python

C:\python33

にインストールしたものとする

PySideのインストール

> pip install PySide

おわり

QtDesignerってどこにあるの

  • PySideインストールしたら一緒についてきます
C:\python33\Lib\site-packages\PySide\designer.exe

QtDesignerで作ったuiファイルをpyに変換

> pyside-uic app.ui -o app.py

すると「予期せぬエラーでたし中断するわ^^ すまんな^^;」と言われるのでランボー怒りのデバッグ出力

> pyside-uic -d app.ui -o app.py

すると

  # ... 略
  File "C:\python33\Lib\site-packages\pysideuic\uiparser.py", line 212, in createWidget
  bg_name = bg_i18n.string
AttributeError: 'str' object has no attribute 'string'

ということなので

C:\python33\Lib\site-packages\pysideuic\uiparser.py

の該当行から.stringを除いてやれば動く
参考:Bug 1156 – PySide 1.1.0 compile error when assigning radio buttons into a button group

PySideのドキュメント

ここ → http://pyside.github.io/docs/pyside/

Qt関係は正直ググったらStack Overflowがこれでもかって程ヒットするのであまり困らなかった

  • QTableViewでセルをクリックしたら一行すべて選択したい
QTableView.setSelectionBehavior(QAbstractItemView.SelectRows)
  • QTableViewで複数行選択できないようにしたい
QTableView.setSelectionMode(QAbstractItemView.SingleSelection)
  • QTableViewでスクロールがなんかガックガクなのですっきりなめらかにしたい
QTableView.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
QTableView.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)

そうだexeにしよう

> cxfreeze app.py --target-dir dist --base-name Win32GUI --include-modules atexit

参考:Packaging PySide applications on Windows - Qt Wiki

できました

できあがったexeはdllやpydを含めて31MBほど
ひえーでっかい