PyGTK - Lớp ToggleButton

Tiện ích ToggleButton là một gtk.Button có hai trạng thái - a pressed or active (hoặc bật) trạng thái và normal or inactive (or off)tiểu bang. Mỗi khi nút được nhấn, trạng thái sẽ thay đổi. Trạng thái của ToggleButton cũng có thể được thay đổi theo chương trình bằng phương thức set_active (). Để chuyển đổi trạng thái của nút, phương thức toggled () cũng có sẵn.

Lớp gtk.ToggleButton có hàm tạo sau:

gtk.ToggleButton(label = None, use_underline = True)

Ở đây, nhãn là bài kiểm tra được hiển thị trên nút. Thuộc tính use_underline, nếu Đúng, một dấu gạch dưới trong văn bản cho biết ký tự tiếp theo nên được gạch dưới và được sử dụng cho bộ tăng tốc ghi nhớ.

Một số phương thức quan trọng của lớp gtk.ToggleButton được đưa ra trong bảng sau:

set_active () Điều này đặt active tài sản với giá trị True (hoạt động hoặc nhấn hoặc bật) hoặc False (không hoạt động hoặc bình thường hoặc tắt)
get_active () Thao tác này truy xuất trạng thái của nút
bật tắt () Điều này phát ra tín hiệu "được bật tắt" trên nút bật tắt.

Tiện ích ToggleButton phát ra tín hiệu sau:

Đã chuyển đổi Điều này được phát ra khi trạng thái nút bật tắt thay đổi theo chương trình hoặc do hành động của người dùng.

Đoạn mã được đưa ra bên dưới thể hiện việc sử dụng các widget ToggleButton.

Hai widget ToggleButtons và Label được đặt trong một thùng chứa VBox. Tín hiệu bật tắt do Button1 phát ra được kết nối với hàm gọi lại on_toggled (). Trong chức năng này, trạng thái của Button2 được đặt thành True nếu trạng thái của Button1 là False và ngược lại.

if self.btn1.get_active() == True:
   self.btn2.set_active(False)
else:
   self.btn2.set_active(True)

Nó hiển thị trạng thái tức thời của các nút trên Nhãn.

Thí dụ

Quan sát đoạn mã sau:

import gtk

 PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Toggle Button")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      vbox = gtk.VBox()
      self.btn1 = gtk.ToggleButton("Button 1")
      self.btn1.connect("toggled", self.on_toggled)
      self.btn2 = gtk.ToggleButton("Button 2")
      self.lbl = gtk.Label()
      
      vbox.add(self.btn1)
      vbox.add(self.btn2)
      vbox.add(self.lbl)
      self.add(vbox)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   
   def on_toggled(self, widget, data = None):
      if self.btn1.get_active() == True:
         self.btn2.set_active(False)
      else:
         self.btn2.set_active(True)
         state = "Button1 : "+str(self.btn1.get_active())+" 
         Button2 : "+str(self.btn2.get_active())
         self.lbl.set_text(state)
if __name__ == '__main__':
   PyApp()
   gtk.main()

Đoạn mã trên tạo ra kết quả sau: