2017-02-22 22 views
0

В 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 

ответ

0

EDIT: Я понимаю, что вы хотите, чтобы содержание, просто вызовите ваш метод для назначения:

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

Вы забыли о вызове метода, как вы назначаете является указание самого метода.

+0

Я не хочу называть метод прямо сейчас. Я хочу называть его только тогда, когда я нажимаю виджет QLineEdit. Но, вы правы, я не знал, что могу использовать '=' два раза –

 Смежные вопросы

  • Нет связанных вопросов^_^