PyGTK - Lớp lịch
Tiện ích Lịch trong bộ công cụ PyGTK hiển thị một lịch đơn giản với chế độ xem một tháng tại một thời điểm. Các điều khiển điều hướng để thay đổi tháng và năm được hiển thị theo mặc định. Các tùy chọn hiển thị có thể được cấu hình phù hợp.
Giá trị của thuộc tính tháng nằm trong khoảng từ 0 đến 11 và giá trị của thuộc tính ngày là từ 1 đến 31.
Có một hàm tạo đơn giản để tạo một đối tượng gtk.Calendar -
cal = gtk.Calendar()
Kiểu hiển thị mặc định hiển thị tháng và năm hiện tại cũng như tên các ngày.
Lớp gtk.Calendar có các phương thức sau:
Calendar.select_month (mm, yy) - Điều này thay đổi hiển thị lịch thành được chỉ định mm và yy.
Calendar.select_day (dd) - Tùy chọn này sẽ chọn dd trên lịch khi nó có giá trị từ 1 đến 31. Nếu dd là 0 thì lựa chọn ngày hiện tại bị xóa.
Calendar.display_options () - Điều này đặt các tùy chọn hiển thị lịch thành giá trị được chỉ định bởi flags. Các tùy chọn hiển thị có thể có là sự kết hợp của:
gtk.CALENDAR_SHOW_HEADING | Chỉ định rằng tháng và năm sẽ được hiển thị. |
gtk.CALENDAR_SHOW_DAY_NAMES | Chỉ định rằng mô tả ngày bằng ba chữ cái nên có mặt. |
gtk.CALENDAR_NO_MONTH_CHANGE | Ngăn người dùng chuyển tháng bằng lịch. |
gtk.CALENDAR_SHOW_WEEK_NUMBERS | Hiển thị các số tuần của năm hiện tại, xuống phía bên trái của lịch. |
gtk.CALENDAR_WEEK_START_MONDAY | Bắt đầu tuần theo lịch vào Thứ Hai, thay vì Chủ Nhật mặc định. |
Calendar.get_date () - Công cụ này truy xuất năm, tháng và số ngày hiện tại của lịch dưới dạng một bộ (năm, tháng, ngày).
Tiện ích gtk.Calendar phát ra các tín hiệu sau:
chọn ngày | Điều này được phát ra khi một ngày được chọn bởi người dùng hoặc được lập trình. |
tháng thay đổi | Điều này được phát ra khi người dùng thay đổi tháng theo chương trình hoặc theo chương trình. |
tháng tiếp theo | Điều này được phát ra khi người dùng nhấp vào điều khiển điều hướng "tháng tới" trong tiêu đề lịch. |
năm sau | Điều này được phát ra khi người dùng nhấp vào điều khiển điều hướng "năm tới" trong tiêu đề lịch. |
tháng trước | Điều này được phát ra khi người dùng nhấp vào điều khiển điều hướng "tháng trước" trong tiêu đề lịch. |
năm trước | Điều này được phát ra khi người dùng nhấp vào điều khiển điều hướng "năm trước" trong tiêu đề lịch. |
Trong ví dụ sau, điều khiển gtk.Calendar và bốn nút được đặt trong cửa sổ cấp trên cùng.
Khi nhấp vào nút 'tiêu đề', các tùy chọn hiển thị của Lịch được đặt thành SHOW_HEADING -
def heading(self, widget):
self.cal.set_display_options(gtk.CALENDAR_SHOW_HEADING)
Khi người dùng nhấp vào nút 'tên ngày', lệnh gọi lại đặt các tùy chọn hiển thị thành SHOW_DAY_NAMES -
def dayname(self, widget):
self.cal.set_display_options(gtk.CALENDAR_SHOW_DAY_NAMES)
Cả hai tùy chọn hiển thị đều được bật khi nhấn nút 'cả hai'. Để bắt đầu, tất cả cờ của các tùy chọn hiển thị sẽ bị xóa bằng cách đặt nó thành 0.
self.cal.set_display_options(0)
Nút 'set' bật lên một hộp thông báo hiển thị ngày được đánh dấu hiện tại.
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()
Thí dụ
Quan sát đoạn mã sau:
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()
Đoạn mã trên sẽ tạo ra kết quả sau: