PyQt将文件名传递给常用函数

时间:2012-07-31 17:24:55

标签: python file pyqt slots

我可以使用slot函数的return语句为不同的'lambda'd'插槽提供输入吗?

以下我认为不起作用的东西 - 因为X和Y似乎只是布尔值:

class : mainwindow(QtGui.QMainWindow, Ui_test):
    def __init__ (self, parent = None):
        super(mainwindow,self).__init__(parent)
        self.setupUi(self)
        X = QtCore.QObject.connect(self.actionOpenX, OtCore.SIGNAL("triggered()", self.file_dialog)
        Y = QtCore.QObject.connect(self.actionOpenY, OtCore.SIGNAL("triggered()", self.file_dialog)
        QtCore.QObject.connect(self.actionProcess, QtCore.SIGNAL("triggered()", lambda : self.updateUi(X,Y))

def update_Ui(self, X, Y):
    for line in X:
        for line in Y:
            "do something"

def file_dialog(self)
    filedlg = QtGui.QFileDialog(self)
    self.filename = filedlg.getOpenFileName()
return self.filename

我确信这样的事情是可能的,而且我有严重的大脑冻结现象。

非常感谢您的任何帮助

2 个答案:

答案 0 :(得分:1)

QObject.connect的返回值只是一个布尔值,表示连接是成功还是失败。它与插槽的返回值无关。

从您的示例代码中可以看出,您希望在一个步骤中从用户获取一些文件名,然后在单独的第二步中处理它们。

为了做到这一点,文件名需要保留在某处,直到用户决定开始处理步骤。一种常见的方法是在列表小部件或行编辑组中显示所选的文件名,以便以后检索它们。或者,文件名可以简单地附加到内部列表(即类实例的私有属性)。

答案 1 :(得分:0)

X = QtCore.QObject.connect(self.actionOpenX, OtCore.SIGNAL("triggered()", self.file_dialog)总是返回一个bool值,为什么不尝试使用像global x这样的全局变量并在file_dialog中设置x值?