Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 20, 2010 06:19:31

Puppy
От:
Зарегистрирован: 2010-02-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается self в другой class

Хочу увидеть переменную self.mlba объявленную в классе application в классе show_edit… Подскажите как?

http://pastebin.com/ywi7SPax

class show_edit:
def __init__(self):
dt=date_int()
self.date=StringVar()
selection=self.mlba.curselection() # здесь не видит переменную из класса application
….

class application:
“”“Основной класс программы”“”
def init_spisok(self):
self.mlba=multi.MultiListbox(tk,((ru('Тип'), 7),(ru('Дата'), 11), (ru('Отделение'), 37), (ru('№ док-та'), 7))
self.mlba.grid(row=1,column=0)


def __init__(self):
self.init_spisok()
self.init_niz()


app=application()



Офлайн

#2 Апрель 20, 2010 06:30:43

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Не передается self в другой class

А почему он ее должен видеть если она принадлежит другому классу? Передайте mlba в show_edit явно, например при создании его экземпляра.

ЗЫ: Имена классов принято писать с БольшойБуквыИВКэмеллСтиле ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Апрель 20, 2010 06:49:17

Puppy
От:
Зарегистрирован: 2010-02-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается self в другой class

PooH
Передайте mlba в show_edit явно, например при создании его экземпляра.
Спасибо. А как передать пример не подскажете… не соображу чтото.



Офлайн

#4 Апрель 20, 2010 06:59:46

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Не передается self в другой class

Я не вижу в приведенном куске где у вас создается экземпляр show_edit, но что то типа такого:

class show_edit:
def __init__(self, mlba):
dt=date_int()
self.mlba = mlba
self.date=StringVar()
selection=self.mlba.curselection() # здесь не видит переменную из класса application
....

class application:
"""Основной класс программы"""
def init_spisok(self):
self.mlba=multi.MultiListbox(tk,((ru('Тип'), 7),(ru('Дата'), 11), (ru('Отделение'), 37), (ru('№ док-та'), 7))
self.mlba.grid(row=1,column=0)
...

def __init__(self):
self.init_spisok()
self.edit = show_edit(self.mlba)
self.init_niz()


app=application()



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Апрель 20, 2010 07:02:45

Puppy
От:
Зарегистрирован: 2010-02-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается self в другой class

class show_edit:
def __init__(self):
dt=date_int()
self.date=StringVar()
self.mapp=application(self) # ошибка : __init__() takes exactly 1 argument (2 given)

selection=self.mlba.curselection() # здесь не видит переменную из класса application
….

class application:
“”“Основной класс программы”“”
def init_spisok(self):
self.mlba=multi.MultiListbox(tk,((ru('Тип'), 7),(ru('Дата'), 11), (ru('Отделение'), 37), (ru('№ док-та'), 7))
self.mlba.grid(row=1,column=0)

def init_niz(self):
self.edit_but=Button(self.niz_fr,text=ru('Редактировать'),
font=(“Arial”, 10, “bold”),command=lambda:show_edit(self),
width=20)

def __init__(self):
self.init_spisok()
self.init_niz()


app=application()

не увидела вашего сообщения еще, сейчас попробую



Отредактировано (Апрель 20, 2010 07:05:03)

Офлайн

#6 Апрель 20, 2010 07:20:00

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Не передается self в другой class

Ну вот поправьте __init__ для show_edit и вот эту строчку

self.edit_but=Button(self.niz_fr,text=ru('Редактировать'),
font=("Arial", 10, "bold"),command=lambda:show_edit(self, self.mlba),
width=20)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Апрель 20, 2010 07:42:24

Puppy
От:
Зарегистрирован: 2010-02-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается self в другой class

PooH
и вот эту строчку
Спасибо
здесь к сожалению дает ошибку __init__() takes exactly 2 arguments (3 given)

сейчас я убегаю, буду позже.



Отредактировано (Апрель 20, 2010 07:43:30)

Офлайн

#8 Апрель 20, 2010 08:12:17

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Не передается self в другой class

Невнимательно посмотрел

self.edit_but=Button(self.niz_fr,text=ru('Редактировать'),
font=("Arial", 10, "bold"),command=lambda:show_edit(self.mlba),
width=20)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#9 Апрель 20, 2010 10:15:26

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Не передается self в другой class

Что то уж исходники сильно похожи на то что я писал года три назад….
названия переменных:
self.init_spisok()
self.init_niz()
Да и этот ужасный велосипед, от незнания того как работать с кодировками ru('Редактировать')…
Puppy, вы не заглядывали случайно в исходники какого нибудь “лист продаж”?



Офлайн

#10 Апрель 20, 2010 10:55:36

Puppy
От:
Зарегистрирован: 2010-02-23
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Не передается self в другой class

PooH спасибо большое!
igor.kaist ага, случайно заглядывала и взяла за основу, но все переделываю под другую задачу, и тебе спасибо большое! ;)
не поняла только еще, можно ли в multilistbox использовать колесико мышки, чтобы список прокручивать? :)



Отредактировано (Апрель 20, 2010 11:00:33)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version