Форум сайта python.su
Друзья, подскажите как можно передавать переменные между двумя классами в скрипте, т.е. с класса 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())
Офлайн
Что мешает в Parser передать ссылку на экземпляр класса GUI и вызывать его методы?
Вопрос имеет такое же отношение к разделу GUI как угольная шахта к паровозам.
Офлайн
покажи на примере этого кода пожалуйста, очень прошу, а то уже крыша едет от всего :mad:
p.s. а его в гуи из нубовопросов перенесли.
Офлайн
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)
Офлайн