- PyGTK 教程
- PyGTK - 主页
- PyGTK - 简介
- PyGTK - 环境
- PyGTK - 你好世界
- PyGTK - 重要类
- PyGTK - 窗口类
- PyGTK - 按钮类
- PyGTK - 标签类
- PyGTK - 入门级
- PyGTK - 信号处理
- PyGTK - 事件处理
- PyGTK - 容器
- PyGTK - 盒子类
- PyGTK - ButtonBox 类
- PyGTK - 对齐类
- PyGTK - EventBox 类
- PyGTK - 布局类
- PyGTK - 组合框类
- PyGTK - ToggleButton 类
- PyGTK - CheckButton 类
- PyGTK - 单选按钮类
- PyGTK - 菜单栏、菜单和菜单项
- PyGTK - 工具栏类
- PyGTK - 调整类
- PyGTK - 范围类
- PyGTK - 规模类
- PyGTK - 滚动条类
- PyGTK - 对话框类
- PyGTK - 消息对话框类
- PyGTK - AboutDialog 类
- PyGTK - 字体选择对话框
- PyGTK - 颜色选择对话框
- PyGTK - 文件选择器对话框
- PyGTK - 笔记本类
- PyGTK - 框架类
- PyGTK - AspectFrame 类
- PyGTK - TreeView 类
- PyGTK - 窗格类
- PyGTK - 状态栏类
- PyGTK - ProgressBar 类
- PyGTK - 视口类
- PyGTK - 滚动窗口类
- PyGTK - 箭头类
- PyGTK - 图像类
- PyGTK - DrawingArea 类
- PyGTK - SpinButton 类
- PyGTK - 日历类
- PyGTK - 剪贴板类
- PyGTK - 标尺类
- PyGTK - 超时
- PyGTK - 拖放
- PyGTK 有用资源
- PyGTK - 快速指南
- PyGTK - 有用的资源
- PyGTK - 讨论
PyGTK - 日历类
PyGTK 工具包中的日历小部件显示一个简单的日历,一次显示一个月视图。默认情况下显示更改月份和年份的导航控件。可以适当配置显示选项。
Month 属性的值在 0 到 11 之间,date 属性的值在 1 到 31 之间。
有一个简单的构造函数来创建 gtk.Calendar 对象 -
cal = gtk.Calendar()
默认显示样式显示当前月份和年份以及日期名称。
gtk.Calendar 类具有以下方法 -
Calendar.select_month(mm,yy) — 这会将日历显示更改为指定的mm和yy。
Calendar.select_day(dd) —当其值为 1 到 31 之间时,选择日历上指定的dd 。如果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 小部件发出以下信号 -
择日 | 当用户或以编程方式选择某一天时,会发出此消息。 |
月份变化 | 当以编程方式或由用户更改日历月份时,会发出此消息。 |
下个月 | 当用户单击日历标题中的“下个月”导航控件时,会发出此消息。 |
明年 | 当用户单击日历标题中的“明年”导航控件时,会发出此消息。 |
上个月 | 当用户单击日历标题中的“上个月”导航控件时,会发出此消息。 |
去年 | 当用户单击日历标题中的“上一年”导航控件时,会发出此消息。 |
在下面的示例中,一个 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)
当按下“两个”按钮时,两个显示选项都会启用。首先,将显示选项的所有标志设置为 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()
上面的代码将生成以下输出 -