Уведомления

Группа в Telegram: @pythonsu

#1 Май 22, 2014 15:10:30

saicat
Зарегистрирован: 2014-05-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать доступным файл-дескриптор из функции-слота для др. функций? (PyQt)

Доброе время суток!

Ребята, подскажите, пожалуйста, каким образом можно сделать файловый дескриптор, открытый в функции-слоте другим функциям?

Т.е. есть кнопка в GUI, связанная со слотом:

self.pushButton.clicked.connect(self.OpenCSVFile)

И сама функция-слот:
@pyqtSlot()
def OpenCSVFile(self):
    filename = QFileDialog.getOpenFileName(self, 'CSV File Open', '.', 'CSV File (*.csv)')
    global CVS_file
    CVS_file = open(filename[0], 'r', encoding='ISO-8859-1')
 
Как правильно сделать файловый дескриптор CSV_file доступным для других функций, не используя костыль “global”? В принципе, всё работает, но подозреваю, что в Пайтоне есть лучший подход, чем использование global.
Спасибо!

Офлайн

#2 Май 22, 2014 15:15:49

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

как сделать доступным файл-дескриптор из функции-слота для др. функций? (PyQt)

Там есть self.

Офлайн

#3 Май 22, 2014 16:41:00

saicat
Зарегистрирован: 2014-05-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать доступным файл-дескриптор из функции-слота для др. функций? (PyQt)

Shaman
Там есть self.

Если можно, на грамм подробнее. Для дураков))) Ну, или в ссылку ткните. Доки про self прочитал несколько раз, но пока понятнее не стало О каком именно self идет речь?

Спасибо!

Офлайн

#4 Май 23, 2014 10:39:24

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

как сделать доступным файл-дескриптор из функции-слота для др. функций? (PyQt)

class DescriptorHolder(object):
    def __init__(self):
        self._descriptor = None
    @property
    def descriptor(self):
        return self._descriptor
    @descriptor.setter
    def descriptor(self, value):
        self._descriptor = value
class DumbClass(object):
    def __init__(self, holder):
        self.holder = holder
    def piece_of_work(self):
        self.holder.descriptor += 1
global_holder = DescriptorHolder()
def dumb_func():
    global_holder.descriptor = 1
great_object = DumbClass(global_holder)
dumb_func()
great_object.piece_of_work()
print global_holder.descriptor
—>
2
>>> 

Офлайн

#5 Май 26, 2014 13:48:52

saicat
Зарегистрирован: 2014-05-08
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать доступным файл-дескриптор из функции-слота для др. функций? (PyQt)

Спасибо! Буду разбираться.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version