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 위젯은 다음 신호를 내 보냅니다.
요일 선택 | 이것은 사용자가 또는 프로그래밍 방식으로 하루를 선택하면 내 보냅니다. |
월 변경 | 이것은 달력 월이 프로그래밍 방식으로 또는 사용자에 의해 변경 될 때 내 보냅니다. |
다음 달 | 사용자가 달력 헤더에서 "다음 달"탐색 컨트롤을 클릭하면 발생합니다. |
내년 | 사용자가 달력 헤더에서 "다음 해"탐색 컨트롤을 클릭하면 발생합니다. |
이전 달 | 이것은 사용자가 달력 헤더에서 "이전 달"탐색 컨트롤을 클릭 할 때 발생합니다. |
전년도 | 사용자가 달력 헤더에서 "이전 연도"탐색 컨트롤을 클릭하면 발생합니다. |
다음 예제에서는 gtk.Calendar 컨트롤과 4 개의 버튼이 최상위 창에 배치됩니다.
'heading'버튼을 클릭하면 캘린더의 표시 옵션이 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()
위의 코드는 다음 출력을 생성합니다.