Python
Windows
Qt
PyQt

開発環境では動くけれどビルドするとエラーを吐くPyQtコード:QString

More than 1 year has passed since last update.

検証環境

  • 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。