2013-05-11 17 views
5

ile ana iş parçacığı içinde çalışmıyor Py2Pid Python uygulamasını py2app (OS X için) kullanarak oluşturma konusunda sorun yaşıyorum. Uygulama paketinde iş parçacıkları ile komik bir şey olduğu anlaşılıyor. python test.py, bu hatasız çalışıyor:QUygulama PySide uygulama paketi Py2app

Burada komut satırından çalıştırmak

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_() 

asgari örnektir. Ancak sonra aşağıdaki setup.py dosyası ile derleme yaparken:

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'], 
) 

bu hatalar Konsolu görünür:

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) 

Yani App ana iş parçacığı yaşamak inşa ediliyor olmadığını görünen tüm Daha. Herhangi bir fikrin nasıl düzeltileceği

+0

Değeri için PyQt4 (Qt-4.8.3, PyQt-4.9.5, OSX-10.7, Python-2.7.3, py2app) kullanarak sorununuzu yeniden oluşturamıyorum -0.7.3). Belki bu sorun sadece PySide kullanıcılarını etkiler mi? –

+0

Bu garip. Py2app, uygulama paketinde thread oluşturmuyor. –

+0

BTW. Setup.py dosyanıza Pyside almanız gerekmez. –

cevap

0

Sorun, PySide'ın QThreads'i yönetme biçimi gibi görünüyor. Ebeveyn olarak birile QTimer oluşturuyorsunuz. PyQt4 kullanırken bu sorun değil, ancak PySide üzerinde olabilir. Ayrıca, nolu bir , QTimer A , bu nedenle QTimer oluşturmadan kodunuzu çalıştırmayı deneyin.

Not: Soruyu sorduğunuz sırada bu bir hata olabilir. Ve PySide'in son sürümlerinde düzeltilebilir. (Sadece tahmin ediyorum: D)