PyGTK - Xử lý tín hiệu
Không giống như ứng dụng ở chế độ console, được thực thi theo cách tuần tự, ứng dụng dựa trên GUI được điều khiển bởi sự kiện. Cácgtk.main()hàm bắt đầu một vòng lặp vô hạn. Các sự kiện xảy ra trên GUI được chuyển sang các chức năng gọi lại thích hợp.
Mỗi tiện ích PyGTK, có nguồn gốc từ lớp GObject, được thiết kế để phát ra ‘signal’để đáp ứng một hoặc nhiều sự kiện. Tín hiệu tự nó không thực hiện bất kỳ hành động nào. Thay vào đó, nó được 'kết nối' với một hàm gọi lại.
Một số tín hiệu được widget kế thừa, trong khi một số tín hiệu là dành riêng cho widget. Ví dụ: tín hiệu "bật tắt" được phát ra bởi tiện ích con toggleButton.
Bộ xử lý tín hiệu được thiết lập bằng cách gọi connect() phương thức của lớp gtk.widget.
handler_id = object.connect(name, func, func_data)
Đối số đầu tiên, name, là một chuỗi chứa tên của tín hiệu bạn muốn bắt.
Đối số thứ hai, func, là chức năng gọi lại mà bạn muốn được gọi khi nó bị bắt.
Đối số thứ ba, func_data, dữ liệu bạn muốn chuyển đến hàm này.
Id trình xử lý, được sử dụng để xác định duy nhất phương thức gọi lại.
Ví dụ: để gọi hàm onClicked () khi một nút được nhấp, hãy sử dụng cú pháp sau:
btn.connect("clicked",onClicked,None)
Hàm onClicked () được định nghĩa là -
def onClicked(widget, data=None):
Nếu phương thức gọi lại là một phương thức đối tượng, nó sẽ tự nhận như một đối số bổ sung -
def onClicked(self, widget, data=None):
Thí dụ
Trong ví dụ sau, một Nút được thêm vào gtk.Window. Thông báo “Hello World” được in khi nhấp vào nút.
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()
Chạy đoạn mã trên từ dấu nhắc Python. Kết quả sau sẽ được hiển thị:
Khi nhấn nút, kết quả sau được hiển thị trên bảng điều khiển:
Hello TutorialsPoint