static-sites/bases/do-blog/resources/documents/python/gtk3/tut08/tut08-menu-calendar.py

57 lines
2.0 KiB
Python
Executable File

#!/usr/bin/env python
# [SNIPPET_NAME: gtk3 calendar widget with menu]
# [SNIPPET_CATEGORIES: gtk3]
# [SNIPPET_TAGS: widgets, gtk3]
# [SNIPPET_DESCRIPTION: GTK3 calendar example and drop down menu example]
# [SNIPPET_AUTHOR: Oliver Marks ]
# [SNIPPET_LICENSE: GPL]
from gi.repository import Gtk, GLib, GObject
class application_gui:
"""Tutorial 08 menu, calendar widget."""
count = 0
def __init__(self):
#load in our glade interface
xml = Gtk.Builder()
xml.add_from_file('tut08.glade')
#grab our widget using get_object this is the name of the widget from glade, window1 is the default name
self.window = xml.get_object('window1')
self.text = xml.get_object('entry1')
#load our widgets from the glade file
self.widgets = {}
self.widgets['calendar'] = xml.get_object('calendar1')
self.widgets['menushow'] = xml.get_object('menuitem6')
self.widgets['menuhide'] = xml.get_object('menuitem7')
self.widgets['menuhello'] = xml.get_object('menuitem8')
#connect to events, in this instance just quit our application
self.window.connect('delete_event', Gtk.main_quit)
self.window.connect('destroy', lambda quit: Gtk.main_quit())
self.widgets['menushow'].connect('activate', self.showcalendar)
self.widgets['menuhide'].connect('activate', self.hidecalendar)
self.widgets['menuhello'].connect('activate', self.hello)
self.widgets['calendar'].connect('day-selected', self.date_selected)
#show the window else there is nothing to see :)
self.window.show()
def hidecalendar(self, *args):
self.widgets['calendar'].hide()
def showcalendar(self, *args):
self.widgets['calendar'].show()
def hello(self, *args):
self.text.set_text('hello world')
def date_selected(self, *args):
date = self.widgets['calendar'].get_date()
self.text.set_text(str(date[2]) + '-'+str(date[1]) + '-' + str(date[0]))
application = application_gui()
Gtk.main()