如何将从新分配的方法返回的数据分配给Python中的变量?

如何将从新分配的方法返回的数据分配给Python中的变量?

问题描述:

在Python3中,我需要从使用QFileDialog选择的文件中返回数据。我为QLineEdit对象(self.ui.my_file_lineEdit)分配了一个新方法,以便能够在点击它时打开QFileDialog,但是如何将该数据(文件内容)分配给变量?如何将从新分配的方法返回的数据分配给Python中的变量?

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 

import sys 
from mainwindow import * 


class Main(QtWidgets.QMainWindow): 

    def __init__(self): 
     super().__init__() 

     self.init_ui() 


    def init_ui(self): 
     """Initializing GUI from mainwindow module""" 
     self.ui = Ui_MainWindow() 
     self.ui.setupUi(self) 

     #opens a file for selecting my_file.csv 
     self.ui.my_file_lineEdit.mouseReleaseEvent = self.openfile_Dialog 


    def openfile_Dialog(self, event): 
     """ 
     Opens a dialog for choosing a file. Takes two positionals 
     arguments 'self' and 'event' because 'mouseReleaseEvent' sends two 
     """ 
     fname = QtWidgets.QFileDialog.getOpenFileName(self, "Open file", "/home") 
     if fname[0]: 
      f = open(fname[0], "r") 
      with f: 
       data = f.read() 
       return data 
       #self.ui.textBrowser.setText(data) 

当我选择在momonet文件我得到一个错误:

TypeError: invalid result from Main.openfile_Dialog()

我想一个变量分配给该文件的内容。喜欢的东西:

self.my_variable = self.ui.lista_lineEdit.mouseReleaseEvent = self.openfile_Dialog 

编辑: 我知道你想要的内容,只需要调用你的方法来分配:

self.my_variable = self.ui.lista_lineEdit.mouseReleaseEvent = self.openfile_Dialog() 

你忘了调用该方法,您要分配的方式是方法本身的参考。

+0

我现在不习惯调用方法。我只想在单击QLineEdit小部件时调用它。但是,你是对的,我不知道我可以使用'='两次 –