Python—如何在单击按钮时调用的函数中使用变量的值

Python—如何在单击按钮时调用的函数中使用变量的值,python,function,pyqt,signals-slots,Python,Function,Pyqt,Signals Slots,我有一段python代码,如下所示: class MainWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) --snip-- self.ui.pushButton.clicked.connect(self.selectFile) someParameter = someFunction(self.file

我有一段python代码,如下所示:

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

    --snip--        

        self.ui.pushButton.clicked.connect(self.selectFile)
        someParameter = someFunction(self.filename) # (1)

    def selectFile(self):
        self.ui.lineEdit.setText(QtGui.QFileDialog.getOpenFileName())
        self.filename = self.ui.lineEdit.text() # I want to use "filename" variable in (1)

    --snip--

我想获取QFileDialog选择的文件名,并做两件事;首先,在lineEdit小部件中显示文件的地址,然后,将文件的地址存储在一个变量中,以便我可以在后面的过程中使用它。我应该怎么做,正确的方法是什么?

您似乎不习惯使用面向对象编程。 在面向对象编程中,类中有一个成员和方法

在您的情况下,应该像这样定义成员,以便以后可以处理它。所以,您应该了解面向对象编程中的成员

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.filename = ""
        self.someParameter = None

    --snip--        

        self.ui.pushButton.clicked.connect(self.selectFile)

    def setParameter(self):
        self.someParameter = someFunction(self.filename)

    def selectFile(self):
        self.filename = QtGui.QFileDialog.getOpenFileName()
        self.ui.lineEdit.setText(self.filename)
        self.setParameter()

    --snip--
编辑

下面是一些使用QFileDialog.getOpenFileName的示例代码。试试这个

from PyQt5.QtWidgets import QWidget, QPushButton, QFileDialog, QVBoxLayout, QApplication
from PyQt5 import QtGui

class my_ui(QWidget):
    def __init__(self, parent=None):
        super(my_ui, self).__init__()
        self.filename = ""
        self.button1 = QPushButton("show dialog", parent)
        self.button2 = QPushButton("do something", parent)
        self.button1.clicked.connect(self.show_dialog)
        self.button2.clicked.connect(self.do_something)
        self.layout = QVBoxLayout()
        self.layout.addWidget(self.button1)
        self.layout.addWidget(self.button2)
        self.setLayout(self.layout)
    def show_dialog(self):
        self.filename = QFileDialog.getOpenFileName()
        print("filename updated: '%s'"%str(self.filename)) 
    def do_something(self):
        print("filename = '%s'"%str(self.filename)) 

app = QApplication([])
sample_ui = my_ui()
sample_ui.show()
app.exec_()

如何确保该值已更新?就像使用打印只是为了检查value@gnome:您想检查哪个变量,然后使用什么方法?我想使用FileDialog选择的文件名,然后稍后使用另一个模块打开它,读取其中的数据并进行一些数学运算stuff@gnome:我添加了使用QFileDialog.getOpenFileName的示例代码。看看这是不是你想要的。