0

ここでは、Python 2.7.3(x64)、PyQt 4.9.5-1(x64)をWin7x64で実行しています。単純なPyQtスクリプトをexeファイルに変換したいと思います。
これは私のPythonスクリプトです:

#!/usr/bin/env python

import sys
from PyQt4 import Qt

a = Qt.QApplication(sys.argv)

def sayHello():
    print "Hello, World!"

hellobutton = Qt.QPushButton("Say 'Hello world!'",None)

a.connect(hellobutton, Qt.SIGNAL("clicked()"), sayHello)

hellobutton.show()
a.exec_()

コマンドラインから実行すると、期待どおりに機能します。py2exeにsetup.pyを使用します。

from distutils.core import setup
import py2exe
setup(console=['pyqt-example.py'])

ただし、py2exe 0.6.9を使用してexeファイルに変換しようとすると、exeファイルをpython setup.py py2exe実行すると次のエラーが発生します。

Traceback (most recent call last):
  File "pyqt-example.py", line 6, in <module>
    a = Qt.QApplication(sys.argv)
AttributeError: 'module' object has no attribute 'QApplication'

また、cx_freeze4.3をで試しました\Python27\Scripts\cxfreeze pyqt-example.py --target-dir dist。これにより、次のようになります。

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
    exec code in m.__dict__
  File "pyqt-example.py", line 6, in <module>
    a = Qt.QApplication(sys.argv)
AttributeError: 'module' object has no attribute 'QApplication'

したがって、いくつかのQtコンポーネントの場所について、これらのツールの両方に通知するのを逃したと思います。私は正確に何が欠けていますか?

4

1 に答える 1

0

Avaris に感謝します。あなたのヒントは正しかったです。モジュール Qt の使用を避けることが答えです。これは正常に動作するスクリプトです:

#!/usr/bin/env python

import sys
from PyQt4 import QtGui,QtCore

a = QtGui.QApplication(sys.argv)

def sayHello():
    print "Hello, World!"

hellobutton = QtGui.QPushButton("Say 'Hello world!'",None)

a.connect(hellobutton, QtCore.SIGNAL("clicked()"), sayHello)

hellobutton.show()
a.exec_()

その後、 cx_freeze so: を呼び出す必要がありますcxfreeze pyqt-example.py --include-modules atexit --target-dir dist。そしてそれはうまくいきます!

于 2012-10-08T09:08:21.383 に答える