PyGTK - Kelas Dialog
Widget Dialog biasanya digunakan sebagai jendela pop-up di atas jendela induk. Tujuan Dialog adalah mengumpulkan beberapa data dari pengguna dan mengirimkannya ke jendela induk. Dialog dapat berupa modal (di mana ia memblokir frame induk) atau modeless (bingkai dialog dapat dilewati).
Widget Dialog pustaka PyGTK adalah jendela yang dibelah secara vertikal. Di bagian atasnya, ada gtk.VBox tempat Label atau Widget Entri dikemas. Bagian bawah disebut action_area di mana satu atau lebih tombol ditempatkan. Dua area dipisahkan oleh gtk.HSeparator.
gtk. Kelas dialog memiliki konstruktor berikut -
dlg = gtk.Dialog (Title = None, parent = None, flags = 0, buttons = None)
Dimana,
Title - Apakah teks muncul di bilah Judul widget Dialog.
Parent - Adalah referensi ke jendela tingkat atas tempat dialog muncul.
Flag- Mendefinisikan konstanta yang mengontrol operasi Dialog. Konstanta yang ditentukan adalah -
gtk.DIALOG_MODAL | Jika disetel, dialog mengambil semua acara keyboard |
gtk.DIALOG_DESTROY_WITH_PARENT | Jika disetel, dialog dimusnahkan jika induknya adalah. |
gtk.DIALOG_NO_SEPARATOR | Jika disetel, tidak ada bilah pemisah di atas tombol. |
Apa itu Tombol?
Tombol adalah objek tupel yang berisi pasangan gtk. Tombol dengan ID stok (atau teks) dan ID responsnya.
ID respons bisa berupa angka apa pun atau salah satu konstanta ID Respons yang telah ditentukan sebelumnya -
- 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
Metode penting dari kelas gtk.Dialog diberikan di bawah ini -
add_button() - Menambahkan tombol dengan teks yang ditentukan oleh button_text (atau tombol stok, jika button_text adalah ID saham) di action_area.
response() - Memancarkan sinyal "respons" dengan nilai yang ditentukan dalam response_id
run() - Menampilkan dialog dan mengembalikan response_id saat delete_event dipancarkan.
set_default_response() - Menyetel widget terakhir di area aksi dialog dengan yang ditentukan response_id sebagai widget default untuk dialog.
gtk.Dialog widget memancarkan sinyal berikut -
Menutup | Ini dibunyikan saat dialog ditutup. |
Tanggapan | Ini dipancarkan saat widget action_area diaktifkan (tombol "diklik"), dialog menerima delete_event atau aplikasi memanggil metode response (). |
Dua tombol di action_area widget Dialog menggunakan ID Saham gtk.STOCK.CANCEL dan gtk.STOCK_OK. Mereka terkait dengan ID respons gtk. RESPONSE_REJECT dan gtk. RESPONSE_ACCEPT masing-masing. Dialog ditutup jika ada tombol yang ditekan. Metode run () mengembalikan ID respons yang sesuai yang dapat digunakan untuk pemrosesan lebih lanjut.
Kode berikut menampilkan gtk. Jendela tingkat atas dengan Tombol di dalamnya. Saat tombol diklik, Dialog muncul dengan label dan dua tombol.
Contoh
Perhatikan kode berikut -
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()
Kode di atas menghasilkan keluaran sebagai berikut -
Widget Dialog yang Telah Dikonfigurasi
PyGTK API memiliki sejumlah widget Dialog yang telah dikonfigurasi sebelumnya -
- MessageDialog
- AboutDialog
- ColorSelectionDialog
- FontSelectionDialog
- FileChooserDialog
Untuk mendemonstrasikan fungsi dialog standar di atas di PyGTK, menu dengan item menu yang masing-masing memanggil dialog saat diklik, dimasukkan ke dalam gtk.Window di program berikut. Fungsi panggilan balik yang merespon untuk mengaktifkan sinyal dari setiap item menu terdaftar. Anda juga dapat memahami penjelasan yang diberikan untuk setiap jenis widget dialog.
Contoh
Perhatikan kode berikut -
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()
Kode di atas akan menghasilkan output berikut -