PyQt5:如何将一个按钮的变量输出用于另一个按钮?

时间:2017-04-11 03:58:20

标签: python python-3.x pyqt pyqt5 qfiledialog

我正在尝试使用PyQt5在python代码上实现GUI。我想出了如何使用按钮以及如何将它们连接到功能。

按钮b3调用“SelectFile”函数

self.b3.clicked.connect(self.SelectFile)

def SelectFile(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        filename = QFileDialog.getOpenFileName(self, "Select file", "", "TMY3 files (*.epw)", options=options)[0]
            print(filename)
            return filename

我遇到的问题是我希望“SelectFile”返回文件的路径,然后将该路径用于另一个按钮调用的另一个函数。我怎样才能做到这一点?

例如,

self.b1.clicked.connect(self.btn_clk)

 def btn_clk(self):
    sender = self.sender()
    if sender.text() =='Print':
        test = filename
        print(test)

“filename”未传递给“btn_clk”,我不知道该怎么做。 我试图在“btn_clk”的定义和其他尝试中输入“filename”,但没有任何效果。

由于

2 个答案:

答案 0 :(得分:0)

def SelectFile(self):
    options = QFileDialog.Options()
    options |= QFileDialog.DontUseNativeDialog
    filename = QFileDialog.getOpenFileName(self, "Select file", "", "TMY3 files (*.epw)", options=options)[0]
        print(filename)
        self.b1_filename = filename
        return filename

self.b1.clicked.connect(self.btn_clk)

def btn_clk(self):
    sender = self.sender()
    if sender.text() =='Print':
        test = self.b1_filename
        print(test)

答案 1 :(得分:0)

只需将它存放在课堂上,它就可以了。使用下面的代码进行测试。您可以调整以适应您的代码。

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
import sys

class TestSelectFile(QDialog):
    def __init__(self):
        QDialog.__init__(self)

        self.layout = QVBoxLayout()
        self.selectfilebutton = QPushButton('Select file')
        self.printpathbutton = QPushButton('Press to print')

        self.setLayout(self.layout)
        self.layout.addWidget(self.selectfilebutton)
        self.layout.addWidget(self.printpathbutton)

        self.selectfilebutton.clicked.connect(self.getpath)
        self.printpathbutton.clicked.connect(self.printpath)

    def getpath(self):
        self.path = QFileDialog.getOpenFileName(self,caption='Get a path from',filter='All Files(*.*)')

    def printpath(self):
        print(self.path)



app = QApplication(sys.argv)
dialog = TestSelectFile()
dialog.show()
app.exec_()