2012-11-18 36 views
0
def setPixData(self,data): 
    print(data) #this print the image file name correctly e.g asdfghj.jpg 
    img=QtGui.QImage(QtCore.QCoreApplication.applicationDirPath()+"/temp/"+data) 
    pix=QtGui.QPixmap.fromImage(img) 
    self.driver_ui.pix.setPixmap(pix) 

這是從開發代碼運行它時正確加載圖像。 一旦我用cx_freeze凍結它並將其安裝到最終的目標目錄中,它不會加載圖像。即使圖像在指定的路徑中。即使它存在,QImage也不會加載圖像

我試過硬編碼到凍結版本的完整路徑,仍然沒有運氣。 我已經在上面的代碼的每一行放置了一個f.write(),並且它們都運行沒有錯誤。 我想這個問題是從QImage,因爲它isNull()

返回true,這可能是什麼問題,如果QImage沒有被添加cx_freeze,它將確保拋出和異常,並不會在下一行運行f.write()。 我迷失在這裏。

注意:這是一個Python GUI中的Windows GUI應用程序。

+1

請始終使用'os.path.join()'構造路徑; 'os.path.join(QtCore.QCoreApplication.applicationDirPath(),'temp',data)'你的情況。不知道這是否可以解決您的問題,但例如,它可以避免Windows上帶有混合分隔符的大量問題。 –

+0

謝謝,我剛剛實施,但仍然沒有運氣。 –

+0

@MartijnPieters Qt使用「/」作爲通用目錄分隔符,與「/」用作URL中的路徑分隔符相同。如果您始終使用「/」作爲目錄分隔符,Qt會將您的路徑轉換爲符合底層操作系統。http://doc.qt.digia.com/qt/qdir.html – cgmb

回答

0

您可能會給它一個不正確的文件路徑。 文件存在的事實不幫助QImage,如果你不給它一個正確的文件路徑。

+0

問題解決了!我將位於我的PyQt安裝文件夾的plugins目錄下的plugins/imageformats文件夾複製到我的應用程序文件夾中。謝謝Avaris和其他人的貢獻 –

相關問題