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_functionother_function(YourWidget.select())

.select()の出力を自分の属性に保存することもできますQWidget

于 2012-09-27T12:28:23.690 に答える