2012-09-27 65 views
0

以下函數都由單獨的QPushButton的單擊信號激活。我想讓用戶有可能選擇一個.pdf文件,執行一些程序特定的編輯並將其保存到用戶定義的位置。Pyside:將函數中生成的變量傳遞給另一個函數

我該怎麼做才能將.pdf的路徑傳遞給另一個函數?


def select(self): 
    dir = "." 
    fileObjOpen = QFileDialog.getOpenFileName(self, "Select a .pdf file", dir=dir, filter="PDF Files (*.pdf)") 
    fileObjOpenName = fileObjOpen[0] 

    if (len(fileObjOpenName) > 1): 
     path_to_pdf = fileObjOpenName 

def save(self): 
    dir = "." 
    fileObjSave = QFileDialog.getSaveFileName(self, "Where to save the new pdf file", dir=dir, filter="PDF Files (*.pdf)") 
    fileNameSave = fileObjSave[0] 

    if (len(fileNameSave) > 1): 
     path_to_pdf = path_to_pdf 

回答

2

我不知道pyside什麼,但好像你正在使用的一類,因爲self是第一個參數到您的每一個功能。如果是這種情況,您可以將path_to_pdf設置爲類實例上的一個屬性。

例如

def select(self): 
    #snip ... 
    if len(fileObjOpenName) > 1: 
     self.path_to_pdf = fileObjOpenName 

def save(self): 
    #snip ... 
    if len(fileNameSave) > 1: 
     path_to_pdf = self.path_to_pdf 

如果我可怕的曲解了這個,讓我知道,我會刪除我的答案。

+0

屬性這是解決方案。謝謝 :)! –

+0

@ user1684082 - 沒問題。樂於幫助。 – mgilson

1

請確保您的函數返回的東西...:

def select(self): 
    ... 
    (filename, fileselector) = QFileDialog.getOpenFileName(...) 
    if filename: 
     return filename 
    return 

默認情況下,select,如同在Python中的任何方法或函數,將返回None,所以最後return是多餘的(但我喜歡展示它實際上結束了)。

現在,您可以撥打other_function作爲other_function(YourWidget.select())

你也可以的.select()輸出存儲在你的QWidget

相關問題