0

以下功能均由单独的单击信号激活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
4

2 回答 2

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

如果我严重误解了这一点,请告诉我,我将删除我的答案。

于 2012-09-27T12:25:50.387 回答
1

确保你的函数返回一些东西......:

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

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

现在,您将调用您的other_functionas other_function(YourWidget.select())

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

于 2012-09-27T12:28:23.690 回答