PYQT 在按钮上调用一个函数,并选择一个文件

PYQT call a function on a button, with a file selected

我正在尝试创建一个 gui 文件转换器。我想 select 要转换哪个文件并使用我在文件上转换的函数。

 class Window(QtGui.QDialog):
    def __init__(self, parent=None):
    super(Window, self).__init__(parent)

    self.setGeometry(500, 300, 800, 600)

    self.setWindowTitle("Convert XML to CSV!")

# Open a FILE and append to screen
    self.buttonSelect = QtGui.QPushButton('Select Files', self)
    self.buttonSelect.move(350, 100)
    self.buttonSelect.clicked.connect(self.handleButton)


    self.buttonConvert = QtGui.QPushButton('Convert', self)
    self.buttonConvert.move(50,100)
    self.buttonConvert.setFixedSize(155,100)
    self.buttonConvert.clicked.connect(self.convert)

def handleButton(self):
    title = self.buttonSelect.text()
    file_list = QtGui.QFileDialog.getOpenFileNames(self, title)
    for path in file_list:
        print (path)
    self.fileList = file_list
    self.askForfFile.setText(path)

    return file_list

----------------

def convertor(self):
 # process all non-master CSVs
    for fileLocated in os.listdir(directoryPath):
        if fileLocated.endswith(".csv") and 'master' not in fileLocated.lower():

            csvFilename = fileLocated

   etc..

如有任何帮助或指导,我们将不胜感激!是的,由于选项卡在浏览器中不起作用,间距已关闭 :(

我不太确定这是否是您的问题: QFileDialog.getOpenFileNames(self, title) returns 一个元组,其中包含 selected 文件的列表及其完整路径和过滤器 resp。如果没有设置过滤器,则为空字符串。所以你必须遍历 file_list[0] 来获取 selected 文件。如果您在此位置设置过滤器,则用户只能 select 个匹配过滤器的文件:

file_list = QtGui.QFileDialog.getOpenFileNames(self, title, None, 'CSV-files: *.csv')   
for path in file_list[0]:
    ....