Puppy
Апрель 20, 2010 06:19:31
Хочу увидеть переменную 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
Апрель 20, 2010 06:30:43
А почему он ее должен видеть если она принадлежит другому классу? Передайте mlba в show_edit явно, например при создании его экземпляра.
ЗЫ: Имена классов принято писать с БольшойБуквыИВКэмеллСтиле ;)
Puppy
Апрель 20, 2010 06:49:17
PooH
Передайте mlba в show_edit явно, например при создании его экземпляра.
Спасибо. А как передать пример не подскажете… не соображу чтото.
PooH
Апрель 20, 2010 06:59:46
Я не вижу в приведенном куске где у вас создается экземпляр 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
Апрель 20, 2010 07:02:45
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
Апрель 20, 2010 07:20:00
Ну вот поправьте __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
Апрель 20, 2010 07:42:24
PooH
и вот эту строчку
Спасибо
здесь к сожалению дает ошибку __init__() takes exactly 2 arguments (3 given)
сейчас я убегаю, буду позже.
igor.kaist
Апрель 20, 2010 10:15:26
Что то уж исходники сильно похожи на то что я писал года три назад….
названия переменных:
self.init_spisok()
self.init_niz()
Да и этот ужасный велосипед, от незнания того как работать с кодировками ru('Редактировать')…
Puppy, вы не заглядывали случайно в исходники какого нибудь “лист продаж”?
Puppy
Апрель 20, 2010 10:55:36
PooH спасибо большое!
igor.kaist ага, случайно заглядывала и взяла за основу, но все переделываю под другую задачу, и тебе спасибо большое! ;)
не поняла только еще, можно ли в multilistbox использовать колесико мышки, чтобы список прокручивать? :)