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()
위의 코드는 다음 출력을 생성합니다.