Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Передача переменных между классами [RSS Feed]

#1 Май 17, 2011 18:47:38

InPython
От:
Зарегистрирован: 2011-01-31
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача переменных между классами

Друзья, подскажите как можно передавать переменные между двумя классами в скрипте, т.е. с класса Gui в класс Parser и наоборот (если в Gui добавить StaticText и заполнить его значением из Parser)

# -*- coding: utf-8 -*-
import wx, urllib, re, time
класс интерфейса
class Gui(wx.Dialog):
def __init__(self,parent):
wx.Dialog.__init__(self, parent, title = u'Парсер', size = (190, 120))
forum_url = wx.StaticText(self, -1, u'Адрес ресурса', (10, 25), size = (75, 20), style = wx.ALIGN_LEFT)
wx.TextCtrl(self, -1, u'сайт.ру/форум', pos = wx.Point(100, 25), size = wx.Size(80, 20))
wx.StaticText(self, -1, u'с какой', (10, 50), size = (50, 20), style = wx.ALIGN_LEFT)
wx.TextCtrl(self, -1, u'1', pos = wx.Point(80, 50), size = wx.Size(20, 20))
wx.StaticText(self, -1, u'по какую', (110, 50), size = (50, 20), style = wx.ALIGN_LEFT)
wx.TextCtrl(self, -1, u'1', pos = wx.Point(160, 50), size = wx.Size(20, 20))
wx.Button(self, -1, u'Файл для записи', (10, 75), (100, 20)).Bind(wx.EVT_BUTTON, self.onOpenFile)
wx.Button(self, -1, u'Старт', (120, 75), (60, 20))
self.Centre()
self.ShowModal()
self.Destroy()
def onOpenFile(self, event):
dlg = wx.FileDialog(self, message="Choose a file", defaultFile="", wildcard = "Text file (*.txt)|*.txt|" "All files (*.*)|*.*", style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR)
if dlg.ShowModal() == wx.ID_OK:
paths = dlg.GetPaths()
dlg.Destroy()
класс парсера
class Parser:
def main(self, f, count, start):
while True:
if count == 122:
f.close()
print 'collection time:', time.time() - start, '\n', 'collected:', str(len(open('user.txt', 'r').readlines()))
break
for user in (re.findall('profile.php\?id=\d+\">([^<]+)</a>', urllib.urlopen('http://python.su/forum/userlist.php?username=&show_group=-1&sort_by=username&sort_dir=ASC&p='+str(count)).read())):
f.write(user + '\n')
print user
count += 1
старт работы скрипта
app = wx.App()
Gui(None)
start = Parser()
start.main(open("user.txt", "w+"), 115, time.time())
И вопрос еще по конструктору в классе, как с помощью __init__ задать можно по умолчанию переменные f, count, start
и как вообще лучше\правильней работать с классами в подобных скриптах?



Офлайн

#2 Май 18, 2011 11:19:09

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Передача переменных между классами

Что мешает в Parser передать ссылку на экземпляр класса GUI и вызывать его методы?
Вопрос имеет такое же отношение к разделу GUI как угольная шахта к паровозам.



Офлайн

#3 Май 18, 2011 11:53:23

InPython
От:
Зарегистрирован: 2011-01-31
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача переменных между классами

покажи на примере этого кода пожалуйста, очень прошу, а то уже крыша едет от всего :mad:
p.s. а его в гуи из нубовопросов перенесли.



Офлайн

#4 Май 18, 2011 16:45:09

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Передача переменных между классами

class Parser:
def __init__(self, gui_object):
self.gui_object = gui_object

def do_some_with_gui(self):
// atention! magic here!
self.gui_object.some_parameter.set('34566')

def __del__(self):
self.gui_object = null

class GUI(some_gui_object):
def __init__(self, parent=null):
some_gui_object.__init__(self, parent);
// magic preparetions.
self.some_parameter = StringVar();
...

g = GUI()
p = Parser(g)
p.do_some_with_gui()
Сами думайте.



Отредактировано (Май 18, 2011 16:48:07)

Офлайн

  • Начало
  • » GUI
  • » Передача переменных между классами[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version