Tôi đang gặp sự cố khi xây dựng ứng dụng PySide Python bằng py2app (dành cho OS X). Có vẻ như điều gì đó vui nhộn xảy ra với các chuỗi trên gói ứng dụng.QApplication không chạy trong chủ đề chính khi xây dựng gói ứng dụng PySide với py2app
Dưới đây là ví dụ tối thiểu
from PySide.QtCore import *
from PySide.QtGui import *
import sys
class App(QApplication):
def __init__(self):
QApplication.__init__(self, sys.argv, True)
self.timer = QTimer(self)
if __name__=='__main__':
app = App()
app.exec_()
Khi chạy từ dòng lệnh: python test.py
, điều này hoạt động tốt mà không có lỗi. Tuy nhiên khi tôi sau đó biên dịch nó với setup.py sau:
from setuptools import setup
import py2app
import PySide
APP = ['test.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': False,
'includes' : 'PySide',
'resources' : "qt_menu.nib"
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
các lỗi này xuất hiện trong Console:
11/05/2013 13:54:20.958 [0x0-0xb37b37].org.pythonmac.unspecified.test: QObject: Cannot create children for a parent that is in a different thread.
11/05/2013 13:54:20.958 [0x0-0xb37b37].org.pythonmac.unspecified.test: (Parent is App(0x105f41f10), parent's thread is QThread(0x100106cc0), current thread is QThread(0x10251ea80)
Vì vậy, có vẻ như App không được xây dựng để sống trong các chủ đề chính nào hơn. Bất kỳ ý tưởng làm thế nào để sửa lỗi này?
Đối với những gì nó có giá trị, tôi không thể tái tạo vấn đề của bạn bằng cách sử dụng PyQt4 (Qt-4.8.3, PyQt-4.9.5, OSX-10.7, Python-2.7.3, py2app -0,7,3). Có lẽ vấn đề này chỉ ảnh hưởng đến người dùng PySide? –
Thật lạ lùng. Py2app không tạo chủ đề trong gói ứng dụng. –
BTW. Bạn không phải nhập Pyside trong tệp setup.py của mình. –