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

2024-10-02 22:30:40 发布

您现在位置:Python中文网/ 问答频道 /正文

以下两个函数都由单独的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

Tags: topath函数用户selfpdfdefdir
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

如果我误解了这一点,让我知道,我会删除我的答案。你知道吗

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

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

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

现在,您可以将您的other_function称为other_function(YourWidget.select())。你知道吗

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

相关问题 更多 >