PyGTK - Lớp ComboBox

ComboBox là một tiện ích mạnh mẽ và phổ biến trong bất kỳ bộ công cụ GUI nào. Nó cung cấp một danh sách thả xuống các mục mà từ đó người dùng có thể chọn. Tiện ích gtk.ComboBox triển khai giao diện CellLayout và cung cấp một số phương pháp để quản lý việc hiển thị các mục.

Đối tượng của lớp gtk.ComboBox được liên kết với ListSore, đây là một mô hình danh sách có thể được sử dụng với các widget hiển thị bộ sưu tập các mục. Các mục được thêm vào ListStore bằng phương thức append (). Hơn nữa, một đối tượng CellRendererText được tạo và đóng gói vào hộp kết hợp.

Làm theo các bước sau để thiết lập hộp kết hợp.

combobox = gtk.ComboBox()
store = gtk.ListStore(gobject.TYPE_STRING)
cell = gtk.CellRendererText()
combobox.pack_start(cell)
combobox.add_attribute(cell, 'text', 0)

PyGTK cung cấp một phương pháp tiện lợi - gtk.combo_box_new_text()để tạo hộp tổ hợp thay vì sử dụng kho danh sách. Các phương thức tiện lợi được liên kết append_text (), prepend_text (), insert_text () và remove_text () được sử dụng để quản lý nội dung hộp tổ hợp.

Lớp gtk.ComboBox có các phương thức sau:

S.NO Phương pháp và Mô tả
1

set_wrap_width()

Đặt số cột được hiển thị trong bố cục bảng bật lên

2

get_active()

Trả về giá trị của thuộc tính "hoạt động" là chỉ mục trong mô hình của mục hiện đang hoạt động

3

set_active()

Đặt mục đang hoạt động của combo_box thành mục có chỉ mục mô hình được chỉ định

4

set_model()

Đặt mô hình được sử dụng bởi hộp kết hợp

5

append_text()

Thêm chuỗi được chỉ định bởi văn bản vào danh sách các chuỗi được lưu trữ trong cửa hàng danh sách hộp tổ hợp

6

Insert_text()

Chèn chuỗi được chỉ định bởi văn bản trong hộp tổ hợp gtk.ListStore tại chỉ mục được chỉ định bởi vị trí

7

prepend_text()

Thêm chuỗi được chỉ định bởi văn bản vào danh sách các chuỗi được lưu trữ trong kho danh sách

số 8

remove_text()

Loại bỏ chuỗi tại chỉ mục được chỉ định theo vị trí trong kho danh sách được liên kết

9

get_active_text()

Trả về chuỗi hiện đang hoạt động

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

đã thay đổi Điều này được phát ra khi một mục mới trong hộp tổ hợp được chọn
move_active Đây là một tín hiệu liên kết chính được phát ra để di chuyển lựa chọn đang hoạt động.
Bật xuống Đây là một tín hiệu keybinding được phát ra để bật danh sách hộp tổ hợp xuống. Các ràng buộc mặc định cho tín hiệu này là Alt + Up và Escape
Cửa sổ bật lên Đây là một tín hiệu keybinding được phát ra để bật lên danh sách hộp tổ hợp. Các ràng buộc mặc định cho tín hiệu này là Alt + Down.

Hai mã ví dụ cho việc trình diễn ComboBox được đưa ra dưới đây.

ví dụ 1

Trong ví dụ này, một ListStore được điền với tên của các bộ công cụ Python GUI phổ biến và nó được liên kết với một tiện ích ComboBox. Khi người dùng lựa chọn, tín hiệu đã thay đổi được phát ra. Nó được kết nối với một chức năng gọi lại để hiển thị sự lựa chọn của người dùng.

import pygtk
pygtk.require('2.0')
import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("ComboBox with ListStore")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      combobox = gtk.ComboBox()
      store = gtk.ListStore(str)
      cell = gtk.CellRendererText()
      combobox.pack_start(cell)
      combobox.add_attribute(cell, 'text', 0)
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      fixed.put(combobox, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      
      store.append (["PyQt"])
      store.append (["Tkinter"])
      store.append (["WxPython"])
      store.append (["PyGTK"])
      store.append (["PySide"])
      combobox.set_model(store)
      combobox.connect('changed', self.on_changed)
      combobox.set_active(0)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      return
   
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
      return
      
if __name__ == '__main__':
PyApp()
gtk.main()

Khi thực hiện, chương trình hiển thị kết quả sau:

Ví dụ 2

Phiên bản thứ hai của chương trình sử dụng phương pháp tiện lợi combo_box_new_text()để tạo một hộp tổ hợp và hàm append_text () để thêm các chuỗi vào đó. Trong cả hai chương trình,get_active_text() được sử dụng để tìm nạp lựa chọn của người dùng và hiển thị trên nhãn trên cửa sổ.

import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Simple ComboBox")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      cb = gtk.combo_box_new_text()
      cb.connect("changed", self.on_changed)
      cb.append_text('PyQt')
      cb.append_text('Tkinter')
      cb.append_text('WxPython')
      cb.append_text('PyGTK')
      cb.append_text('PySide')
      
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      
      fixed.put(cb, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
if __name__ == '__main__':
   PyApp()
   gtk.main()

Đầu ra của chương trình này tương tự như của chương trình trước.