2012-09-27 46 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

相关问题