0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

検証環境

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

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?