PyGTK-캘린더 클래스

PyGTK 툴킷의 캘린더 위젯은 한 번에 한 달보기로 간단한 캘린더를 표시합니다. 월과 연도를 변경하는 탐색 컨트롤이 기본적으로 표시됩니다. 표시 옵션을 적절하게 구성 할 수 있습니다.

월 속성의 값은 0에서 11 사이이고 날짜 속성의 값은 1에서 31 사이입니다.

gtk.Calendar 객체를 생성하는 간단한 생성자가 있습니다.

cal = gtk.Calendar()

기본 표시 스타일은 현재 월, 연도 및 날짜 이름을 표시합니다.

gtk.Calendar 클래스에는 다음과 같은 메소드가 있습니다.

  • Calendar.select_month (mm, yy) — 달력 표시를 지정된 mmyy.

  • 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()

위의 코드는 다음 출력을 생성합니다.