2011-03-21 41 views
2

我無法理解在使用cx_freeze構建應用程序後,爲什麼我的QGraphicsPixmapItem沒有顯示出來。是否有任何與該類和cx_freeze有關的已知問題,或者我是否缺少一些使用cx_freeze的設置?下面是創建和顯示QGraphicsPixmapItem的部分,之後是我的cx_freeze setup.py:QGraphicsPixmapItem在使用cx_freeze後不會出現

def partNo_changed(self): 
    self.scene.removeItem(self.previewItem) 
    partNumber = self.ui.partNo.text() 
    fileLocation = 'drawings\\FULL\\%s.svg' % partNumber 
    print(fileLocation) 
    pixmap = QtGui.QPixmap(fileLocation) 
    self.previewItem = QtGui.QGraphicsPixmapItem(pixmap) 
    self.previewItem.setPos(0, 0) 
    self.scene.addItem(self.previewItem) 
    self.ui.svgPreview.centerOn(self.previewItem) 

這裏是setup.py腳本:

from cx_Freeze import setup, Executable 

files = ['drawings\\FULL'] 

setup(
     name = 'DBManager', 
     version = '1.0', 
     description = 'Makes and maintains the .csv database files.', 
     author = 'Brock Seabaugh', 
     options = {'build_exe': {'include_files':files, 'bin_path_includes':files}}, 
     executables = [Executable('dbManager_publicDB.py')]) 

其他一切的工作程序,這是唯一不起作用的(它運作,如果我只是運行.py腳本,但不是當我運行exe時)。當我構建或運行該exe文件時,我沒有收到任何錯誤。如果有人能夠幫助這一點,這將是偉大的。我正在使用Python v3.1和cx_freeze v4.2.3和PyQt v4。

回答

5

所以我找到了我的問題的答案。顯然這個問題不在QGraphicsPixmapItem類中,而是在應用程序的QtSvg部分。之所以把我扔掉,是因爲cx_freeze的輸出顯示創建可執行文件時包含了QtSvg模塊,但這並不是程序所需要的。它也需要qt.conf文件。我只需要在'... \ Python31 \ Lib \ site-packages \ PyQt4 \ bin \ qt.conf'中找到qt.conf文件,然後將該文件複製到您的應用程序的可執行文件所在的目錄是在和瞧,它的作品!

+0

還有一個問題需要注意,我在另一個線程中回答了問題,但仍然涉及到該主題。如果你打算把這個可執行文件放在另一臺沒有安裝PyQt4的計算機上(很明顯的一點),你還必須將PyQt的圖像格式.dll文件複製到應用程序文件夾中。你需要做的就是從你的exe中獲得dll文件的相對地址,如下所示:'PyQt4/plugins/imageformats/qsvg4.dll'。然後你必須編輯你的qt.conf文件中的前綴爲PyQt4其他的東西。一旦你這樣做,你應該能夠將它移動到任何與PyQt4(無)的Windows comp。 – 2011-05-06 20:53:16