- PyGTK 教程
- PyGTK - 首页
- PyGTK - 简介
- PyGTK - 环境配置
- PyGTK - Hello World
- PyGTK - 重要类
- PyGTK - 窗口类
- PyGTK - 按钮类
- PyGTK - 标签类
- PyGTK - 输入框类
- PyGTK - 信号处理
- PyGTK - 事件处理
- PyGTK - 容器
- PyGTK - 箱式容器类
- PyGTK - 按钮盒类
- PyGTK - 对齐类
- PyGTK - 事件盒类
- PyGTK - 布局类
- PyGTK - 组合框类
- PyGTK - 切换按钮类
- PyGTK - 复选框类
- PyGTK - 单选按钮类
- PyGTK - 菜单栏、菜单和菜单项
- PyGTK - 工具栏类
- PyGTK - 调整类
- PyGTK - 范围类
- PyGTK - 刻度类
- PyGTK - 滚动条类
- PyGTK - 对话框类
- PyGTK - 消息对话框类
- PyGTK - 关于对话框类
- PyGTK - 字体选择对话框
- PyGTK - 颜色选择对话框
- PyGTK - 文件选择对话框
- PyGTK - 笔记本类
- PyGTK - 框架类
- PyGTK - 带比例的框架类
- PyGTK - 树状视图类
- PyGTK - 分割窗格类
- PyGTK - 状态栏类
- PyGTK - 进度条类
- PyGTK - 视口类
- PyGTK - 滚动窗口类
- PyGTK - 箭头类
- PyGTK - 图片类
- PyGTK - 绘图区类
- PyGTK - 旋转按钮类
- PyGTK - 日历类
- PyGTK - 剪贴板类
- PyGTK - 标尺类
- PyGTK - 定时器
- PyGTK - 拖放
- PyGTK 有用资源
- PyGTK - 快速指南
- PyGTK - 有用资源
- PyGTK - 讨论
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。如果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() — 这将检索日历的当前年份、月份和选定日期数字作为元组 (year, month, day)。
gtk.Calendar 小部件发出以下信号:
| day-selected | 当用户或程序选择日期时发出此信号。 |
| month-changed | 当程序或用户更改日历月份时发出此信号。 |
| next-month | 当用户点击日历标题中的“下个月”导航控件时发出此信号。 |
| next-year | 当用户点击日历标题中的“下一年”导航控件时发出此信号。 |
| prev-month | 当用户点击日历标题中的“上个月”导航控件时发出此信号。 |
| 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)
当按下“两者”按钮时,两个显示选项都启用。首先,通过将其设置为 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()
以上代码将生成以下输出:
广告