Pyside:将函数中生成的var传递给另一个函数

时间:2012-09-27 12:10:15

标签: python function pyside

以下功能均由单独QPushButton的单击信号激活。我想让用户可以选择.pdf文件,执行一些特定于程序的编辑并将其保存到用户定义的位置。

如何才能将.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 个答案:

答案 0 :(得分:2)

我对pyside一无所知,但似乎你正在使用一个类,因为self是你的每个函数的第一个参数。如果是这种情况,您可以将path_to_pdf设置为类实例上的属性。

e.g。

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

如果我可怕地误解了这个,请告诉我,我会删除我的答案。

答案 1 :(得分:1)

确保您的函数返回某些内容......:

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

默认情况下,select与Python中的任何方法或函数一样,将返回None,因此最后return是多余的(但我喜欢显示它实际结束的位置)。< / p>

现在,您可以将other_function称为other_function(YourWidget.select())

您还可以将.select()的输出存储在QWidget

的属性中