検証環境
- Python 2.7 (WinPython-32bit-2.7.10.3)
- Spyder 3.0.0 (同梱)
- PyQt4
- Windows7
- cx_Freeze
setup.py
from cx_Freeze import setup, Executable
exe = Executable(script = 'script.py', base = None)
setup(name = 'name',
version = '0.1',
description = '',
executables = [exe])
症状
exe化したものの実行にのみ発生する。
setupをbase='win32gui'にするとエラーも出さずただ動作が止まるが、Noneにして黒い画面も出していると、そちらに表示される。
エラーメッセージ
TypeError: 'in <string>' requires string as left operand, not QString
問題の値の取得コード
line = QtGui.QLineEdit()
line.text()
一行の入力フォームに入力された値を取得し、これを使うことで発生する。
QLineEdit.text
の返り値がQString
であることは知っていたのだが(QLineEdit Class | Qt 4.8#text-prop)、とりあえずそのまま使ってみてもエラーも出ず正常に動いていたので、ビルド後に引っかかるとは予想外。
対処
line = QtGui.QLineEdit()
str(line.text())
素直に変換。十中八九QString自体に関数がありそうですけど、これでエラー回避出来たのでOK。