PyGTK - Penanganan Sinyal

Tidak seperti aplikasi mode konsol, yang dijalankan secara berurutan, aplikasi berbasis GUI digerakkan oleh peristiwa. Itugtk.main()fungsi memulai loop tak terbatas. Peristiwa yang terjadi di GUI ditransfer ke fungsi panggilan balik yang sesuai.

Setiap widget PyGTK, yang diturunkan dari kelas GObject, dirancang untuk memancarkan ‘signal’sebagai tanggapan atas satu atau lebih peristiwa. Sinyal itu sendiri tidak melakukan tindakan apa pun. Sebaliknya, ini 'terhubung' ke fungsi panggilan balik.

Beberapa sinyal diwarisi oleh widget, sedangkan beberapa sinyal khusus untuk widget. Misalnya, sinyal "toggled" dipancarkan oleh widget toggleButton.

Penangan sinyal disiapkan dengan menjalankan connect() metode kelas gtk.widget.

handler_id = object.connect(name, func, func_data)
  • Argumen pertama, name, adalah string yang berisi nama sinyal yang ingin Anda tangkap.

  • Argumen kedua, func, adalah fungsi panggilan balik yang ingin Anda panggil saat sudah tertangkap.

  • Argumen ketiga, func_data, data yang ingin Anda sampaikan ke fungsi ini.

  • ID penangan, yang digunakan untuk mengidentifikasi metode callback secara unik.

Misalnya, untuk menjalankan fungsi onClicked () saat tombol diklik, gunakan sintaks berikut -

btn.connect("clicked",onClicked,None)

Fungsi onClicked () didefinisikan sebagai -

def onClicked(widget, data=None):

Jika metode callback adalah metode objek, ia menerima dirinya sebagai argumen tambahan -

def onClicked(self, widget, data=None):

Contoh

Dalam contoh berikut, Tombol ditambahkan ke gtk.Window. Pesan “Hello World” dicetak saat tombol diklik.

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Hello World in PyGTK")
      self.set_default_size(400,300)
      self.set_position(gtk.WIN_POS_CENTER)
		
      self.label = gtk.Label("Enter name")
      self.entry = gtk.Entry()
		
      self.btn = gtk.Button("Say Hello")
      self.btn.connect("clicked",self.hello)
		
      fixed = gtk.Fixed()
      fixed.put(self.label, 100,100)
      fixed.put(self.entry, 100,125)
      fixed.put(self.btn,100,150)
		
      self.add(fixed)
      self.show_all()
		
   def hello(self,widget):
      print "hello",self.entry.get_text()
PyApp()
gtk.main()

Jalankan kode di atas dari prompt Python. Output berikut akan ditampilkan -

Saat tombol ditekan, output berikut ditampilkan di konsol -

Hello TutorialsPoint