PyGTK-대화 클래스

대화 창 위젯은 일반적으로 상위 창 위에 팝업 창으로 사용됩니다. 대화 상자의 목적은 사용자로부터 일부 데이터를 수집하여 상위 창으로 보내는 것입니다. 대화 상자는 모달 (상위 프레임 차단) 또는 모달 (대화 프레임 무시 가능) 일 수 있습니다.

PyGTK 라이브러리의 Dialog 위젯은 세로로 분할 된 창입니다. 상단 섹션에는 레이블 또는 항목 위젯이 패킹 된 gtk.VBox가 있습니다. 하단 섹션은 하나 이상의 버튼이 배치 된 action_area라고합니다. 두 영역은 gtk.HSeparator로 구분됩니다.

gtk.Dialog 클래스에는 다음과 같은 생성자가 있습니다.

dlg = gtk.Dialog (Title = None, parent = None, flags = 0, buttons = None)

어디,

  • Title − Dialog 위젯의 제목 표시 줄에 나타나는 텍스트입니다.

  • Parent − 대화 상자가 팝업되는 최상위 창에 대한 참조입니다.

  • Flag− Dialog의 동작을 제어하는 ​​상수를 정의합니다. 정의 된 상수는-

gtk.DIALOG_MODAL 설정하면 대화 상자가 모든 키보드 이벤트를 가져옵니다.
gtk.DIALOG_DESTROY_WITH_PARENT 설정되면 대화 상자는 부모가 될 때 파괴됩니다.
gtk.DIALOG_NO_SEPARATOR 설정된 경우 버튼 위에 구분선이 없습니다.

버튼이란?

Button은 스톡 ID (또는 텍스트)와 그 응답 ID가있는 gtk.Button 쌍을 포함하는 튜플 객체입니다.

응답 ID는 임의의 숫자 또는 미리 정의 된 응답 ID 상수 중 하나 일 수 있습니다.

  • gtk.RESPONSE_NONE
  • gtk.RESPONSE_REJECT
  • gtk.RESPONSE_ACCEPT
  • gtk.RESPONSE_DELETE_EVENT
  • gtk.RESPONSE_OK
  • gtk.RESPONSE_CANCEL
  • gtk.RESPONSE_CLOSE
  • gtk.RESPONSE_YES
  • gtk.RESPONSE_NO
  • gtk.RESPONSE_APPLY
  • gtk.RESPONSE_HELP

gtk.Dialog 클래스의 중요한 메소드는 다음과 같습니다.

  • add_button() − 지정된 텍스트가있는 버튼을 추가합니다. button_text (또는 button_text가 주식 ID 인 경우 주식 버튼) action_area에 있습니다.

  • response() − response_id에 지정된 값으로 "응답"신호를 내 보냅니다.

  • run() − 대화 상자를 표시하고 delete_event가 발생하면 response_id를 반환합니다.

  • set_default_response() − 대화 상자의 작업 영역에서 마지막 위젯을 지정된 response_id 대화 상자의 기본 위젯으로.

gtk.Dialog 위젯은 다음 신호를 내 보냅니다.

닫기 대화 상자를 닫을 때 발생합니다.
응답 action_area 위젯이 활성화되고 (버튼 "클릭 됨") 대화 상자가 delete_event를 수신하거나 응용 프로그램이 response () 메서드를 호출 할 때 발생합니다.

Dialog 위젯의 action_area에있는 두 개의 버튼은 Stock ID gtk.STOCK.CANCEL 및 gtk.STOCK_OK를 사용합니다. 응답 ID gtk와 연관됩니다. RESPONSE_REJECT 및 gtk. 각각 RESPONSE_ACCEPT입니다. 아무 버튼이나 누르면 대화 상자가 닫힙니다. run () 메서드는 추가 처리에 사용될 수있는 해당 응답 ID를 반환합니다.

다음 코드는 그 안에 버튼이있는 최상위 gtk.Window를 표시합니다. 버튼을 클릭하면 레이블과 두 개의 버튼이있는 대화 상자가 나타납니다.

다음 코드를 관찰하십시오-

import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Dialog Demo")
      self.set_default_size(250, 200)
      fixed = gtk.Fixed()
      btn = gtk.Button("Show")
      btn.connect("clicked",self.show_sialog)
      fixed.put(btn,100,100)
      self.add(fixed)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      
   def show_sialog(self, widget, data=None):
      dialog = gtk.Dialog("My dialog",
         self,
         gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
         gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
      label = gtk.Label("Simple dialog")
      dialog.vbox.add(label)
      label.show()
      res = dialog.run()
      print res
      dialog.destroy()
if __name__ == '__main__':
   PyApp()
   gtk.main()

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

사전 구성된 대화 위젯

PyGTK API에는 미리 구성된 대화 위젯이 많이 있습니다.

  • MessageDialog
  • AboutDialog
  • ColorSelectionDialog
  • FontSelectionDialog
  • FileChooserDialog

PyGTK에서 위의 표준 대화 상자의 기능을 보여주기 위해, 클릭하면 대화 상자를 각각 호출하는 메뉴 항목이있는 메뉴가 다음 프로그램의 gtk.Window에 배치됩니다. 각 메뉴 항목의 신호 활성화에 응답하는 콜백 기능이 나열됩니다. 각 유형의 대화 상자 위젯에 대해 제공된 설명을 이해할 수도 있습니다.

다음 코드를 관찰하십시오-

import gtk, pango

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Dialog Boxes")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      mb = gtk.MenuBar()
      menu1 = gtk.Menu()
      file = gtk.MenuItem("_File")
      file.set_submenu(menu1)
      msg = gtk.MenuItem("MessageDialog")
      
      menu1.append(msg)
      abt = gtk.MenuItem("AboutDialog")
      menu1.append(abt)
      colo = gtk.MenuItem("colorDialog")
      menu1.append(colo)
      font = gtk.MenuItem("FontSelectionDialog")
      menu1.append(font)
      fl = gtk.MenuItem("FileChooserDialog")
      menu1.append(fl)
      mb.append(file)
      
      vbox = gtk.VBox(False, 2)
      vbox.pack_start(mb, False, False, 0)
      self.add(vbox)
      self.text = gtk.Label("TutorialsPoint")
      vbox.pack_start(self.text, True, True, 0)
      msg.connect("activate",self.on_msgdlg)
      abt.connect("activate",self.on_abtdlg)
      font.connect("activate",self.on_fntdlg)
      colo.connect("activate",self.on_color)
      
      fl.connect("activate", self.on_file)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   def on_msgdlg(self, widget):
      #MessageDialog usage code
   def on_abtdlg(self, widget):
      #AboutDialog usage code
   def on_fntdlg(self,widget):
      #FontSelectionDialog usage code
   def on_color(self, widget):
      #ColorChooserDialog usage cde
   Def on_file(self, widget):
      #FileChooserDialog usage code
if __name__ == '__main__':
   PyApp()
   gtk.main()

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