вот 2 класса из проекта
class CalendarBox(gtk.Dialog):
sel_date=None
def __close__(self,widget):
self.response(gtk.RESPONSE_CLOSE)
def __on_click(self,widget):
year, month, day=self.calendar.get_date()
self.sel_date=str(day)+'.'+str(month)+'.'+str(year)
self.__close__(widget)
def get_data(self):
return self.sel_date
def __init__(self):
super(CalendarBox,self).__init__()
self.set_decorated(False)
self.calendar=gtk.Calendar()
self.vbox.pack_start(self.calendar,False,True,4)
bt1=gtk.Button('Принять')
bt2=gtk.Button('Закрыть')
bt1.connect('clicked',self.__on_click)
bt2.connect('clicked',self.__close__)
self.action_area.pack_start(bt1,False,True,4)
self.action_area.pack_start(bt2,False,True,4)
self.show_all()
class DateEditEntry(gtk.HBox):
''' создает горизонтальный бокс с строкой ввода и кнопкой для выбора даты (через caledar) '''
def get_text(self):
return self.dt.get_text()
def set_text(self,value):
self.dt.set_text(value)
def __on_click(self,widget,data=None):
''' обрабатываем нажатие на кнопку '''
cl=CalendarBox()
cl.run()
self.dt.set_text(cl.get_data()) # используя метот set_text вносим в виджет данные
cl.destroy()
def __init__(self):
super(DateEditEntry,self).__init__(False)
self.dt=gtk.Entry(10)
self.pack_start(self.dt,False,False,0)
bt=gtk.Button('...')
bt.connect('clicked',self.__on_click,'calendar')
bt.set_tooltip_text('Календарь')
self.pack_start(bt,False,False,0)
ну а класс выбора даты data1=DateEditEntry() где data1 наш виджет который мы можем поместить куда хотим