Найти - Пользователи
Полная версия: Не передается self в другой class
Начало » Python для новичков » Не передается self в другой class
1 2
Puppy
Хочу увидеть переменную 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()
PooH
А почему он ее должен видеть если она принадлежит другому классу? Передайте mlba в show_edit явно, например при создании его экземпляра.

ЗЫ: Имена классов принято писать с БольшойБуквыИВКэмеллСтиле ;)
Puppy
PooH
Передайте mlba в show_edit явно, например при создании его экземпляра.
Спасибо. А как передать пример не подскажете… не соображу чтото.
PooH
Я не вижу в приведенном куске где у вас создается экземпляр 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()
Puppy
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()

не увидела вашего сообщения еще, сейчас попробую
PooH
Ну вот поправьте __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)
Puppy
PooH
и вот эту строчку
Спасибо
здесь к сожалению дает ошибку __init__() takes exactly 2 arguments (3 given)

сейчас я убегаю, буду позже.
PooH
Невнимательно посмотрел
self.edit_but=Button(self.niz_fr,text=ru('Редактировать'),
font=("Arial", 10, "bold"),command=lambda:show_edit(self.mlba),
width=20)
igor.kaist
Что то уж исходники сильно похожи на то что я писал года три назад….
названия переменных:
self.init_spisok()
self.init_niz()
Да и этот ужасный велосипед, от незнания того как работать с кодировками ru('Редактировать')…
Puppy, вы не заглядывали случайно в исходники какого нибудь “лист продаж”?
Puppy
PooH спасибо большое!
igor.kaist ага, случайно заглядывала и взяла за основу, но все переделываю под другую задачу, и тебе спасибо большое! ;)
не поняла только еще, можно ли в multilistbox использовать колесико мышки, чтобы список прокручивать? :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB