PyGTK 日历类

您所在的位置:网站首页 month:日历插件 PyGTK 日历类

PyGTK 日历类

2023-03-15 19:18| 来源: 网络整理| 查看: 265

PyGTK 日历类

PyGTK工具包中的日历部件显示了一个简单的日历,每次有一个月的视图。默认情况下会显示改变月份和年份的导航控件。显示选项可以被适当地配置。

月份属性的值在0到11之间,而日期属性的值在1到31之间。

有一个简单的构造函数来创建gtk.Calendar对象-

cal = gtk.Calendar()

默认的显示方式是显示当前的月和年以及日子的名称。

gtk.Calendar类有以下方法 –

Calendar.select_month(mm,yy) – 这将改变日历显示为指定的 mm 和 yy。

Calendar.select_day(dd) – 在日历上选择指定的 dd ,当它的值在1到31之间时。如果 dd 是0,那么当前的日期选择将被删除。

Calendar.display_options() – 这将日历的显示选项设置为由 flags 指定的值 。 可能的显示选项是以下的组合。

gtk.CALENDAR_SHOW_HEADING 指定应该显示月份和年份。 gtk.CALENDAR_SHOW_DAY_NAMES 指定应该显示三个字母的日期描述。 gtk.CALENDAR_NO_MONTH_CHANGE 防止用户用日历切换月份。 gtk.CALENDAR_SHOW_WEEK_NUMBERS 在日历的左边显示当前年份的每个星期的数字。 gtk.CALENDAR_WEEK_START_MONDAY 在星期一开始日历周,而不是默认的星期日。 Calendar.get_date() – 這是以一個元組(年、月、日)的形式檢索日曆的當前年、月及所選的日數。

gtk.Calendar widget会发出以下信号 –

day-selected 当用户或以编程方式选择了某一天时,这个信号就会发出来。 month-changed 當日曆的月份被程式化地或由使用者改變時,這個信號會被釋放出來。 next-month 当用户点击日历标题中的 “下个月 “导航控件时,发出此信息。 next-year 当用户点击日历标题中的 “下一年 “导航控件时,会发出此信息。 prev-month 当用户点击日历标题中的 “prev-month “导航控件时,就会发出该信息。 prev-year 当用户点击日历页眉中的 “prev-year “导航控件时,就会发出这个信息。

在下面的例子中,一个gtk.Calendar控件和四个按钮被放在顶层窗口中。

当 “标题 “按钮被点击时,日历的显示选项被设置为SHOW_HEADING –

def heading(self, widget): self.cal.set_display_options(gtk.CALENDAR_SHOW_HEADING)

当用户点击’日名’按钮时,回调设置显示选项为SHOW_DAY_NAMES –

def dayname(self, widget): self.cal.set_display_options(gtk.CALENDAR_SHOW_DAY_NAMES)

当按下’both’按钮时,两个显示选项都被启用。首先,所有显示选项的标志都通过设置为0来删除。

self.cal.set_display_options(0)

设置 “按钮会弹出一个信息框,显示当前标记的日期。

tp = self.cal.get_date() str1 = str(tp[0]) str2 = str(tp[1]+1) str3 = str(tp[2]) label = gtk.Label("Date selected:"+str3+"-"+str2+"-"+str1) dialog.vbox.add(label) label.show() 例子

观察下面的代码-

import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("Calendar Demo") self.set_size_request(300, 200) self.set_position(gtk.WIN_POS_CENTER) vbox = gtk.VBox(False, 5) self.cal = gtk.Calendar() halign1 = gtk.Alignment(0.5, 0.5, 0, 0) halign1.add(self.cal) self.cal.set_display_options(0) valign = gtk.Alignment(0, 1, 0, 0) vbox.pack_start(halign1) self.btn1 = gtk.Button("set") self.btn2 = gtk.Button("heading") self.btn3 = gtk.Button("day name") self.btn4 = gtk.Button("Both") hbox = gtk.HBox(True, 3) hbox.add(self.btn1) hbox.add(self.btn2) hbox.add(self.btn3) hbox.add(self.btn4) halign = gtk.Alignment(0.5, 0.5, 0, 0) halign.add(hbox) vbox.pack_start(halign, False, True, 10) self.add(vbox) self.btn1.connect("clicked", self.selectdate) self.btn2.connect("clicked", self.heading) self.btn3.connect("clicked", self.dayname) self.btn4.connect("clicked", self.bothflags) self.connect("destroy", gtk.main_quit) self.show_all() def heading(self, widget): self.cal.set_display_options(gtk.CALENDAR_SHOW_HEADING) def dayname(self, widget): self.cal.set_display_options(gtk.CALENDAR_SHOW_DAY_NAMES) def bothflags(self, widget): self.cal.set_display_options(gtk.CALENDAR_SHOW_HEADING|gtk.CALENDAR_SHOW_DAY_NAMES) def selectdate(self, widget): tp = self.cal.get_date() dialog = gtk.Dialog("My dialog", self, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_OK, gtk.RESPONSE_ACCEPT)) str1 = str(tp[0]) str2 = str(tp[1]+1) str3 = str(tp[2]) label = gtk.Label("Date selected:"+str3+"-"+str2+"-"+str1) dialog.vbox.add(label) label.show() res = dialog.run() dialog.destroy() PyApp() gtk.main()

上述代码将产生以下输出 –

PyGTK - 日历类



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3