PyGTK-ComboBox 클래스

ComboBox는 모든 GUI 툴킷에서 강력하고 인기있는 위젯입니다. 사용자가 선택할 수있는 항목의 드롭 다운 목록을 제공합니다. gtk.ComboBox 위젯은 CellLayout 인터페이스를 구현하고 항목 표시를 관리하기위한 여러 메소드를 제공합니다.

gtk.ComboBox 클래스의 객체는 항목 컬렉션을 표시하는 위젯과 함께 사용할 수있는 목록 모델 인 ListSore와 연결됩니다. append () 메서드를 사용하여 ListStore에 항목을 추가합니다. 또한 CellRendererText 객체가 생성되어 콤보 상자에 압축됩니다.

콤보 박스를 설정하려면 다음 단계를 따르세요.

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

PyGTK는 편리한 방법을 제공합니다. gtk.combo_box_new_text()목록 저장소를 사용하는 대신 콤보 상자를 만듭니다. 연관된 편의 메소드 append_text (), prepend_text (), insert_text () 및 remove_text ()는 콤보 상자 내용을 관리하는 데 사용됩니다.

gtk.ComboBox 클래스에는 다음과 같은 메소드가 있습니다.

S.NO 방법 및 설명
1

set_wrap_width()

팝업 테이블 레이아웃에 표시 할 열 수를 설정합니다.

2

get_active()

현재 활성 항목의 모델에서 인덱스 인 "활성"속성 값을 반환합니다.

set_active()

combo_box의 활성 항목을 모델 색인이 지정된 항목으로 설정합니다.

4

set_model()

콤보 상자에서 사용하는 모델을 설정합니다.

5

append_text()

콤보 상자 목록 저장소에 저장된 문자열 목록에 텍스트로 지정된 문자열을 추가합니다.

6

Insert_text()

콤보 상자 gtk.ListStore의 텍스트로 지정된 문자열을 위치로 지정된 인덱스에 삽입합니다.

7

prepend_text()

목록 저장소에 저장된 문자열 목록 앞에 텍스트로 지정된 문자열을 추가합니다.

8

remove_text()

연관된 목록 저장소의 위치로 지정된 색인에서 문자열을 제거합니다.

9

get_active_text()

현재 활성 문자열을 반환합니다.

ComboBox 위젯은 다음 신호를 방출합니다.

변경 콤보 상자의 새 항목이 선택 될 때 발생합니다.
move_active 이것은 활성 선택을 이동하기 위해 방출되는 키 바인딩 신호입니다.
팝 다운 이것은 콤보 상자 목록을 팝업하기 위해 방출되는 키 바인딩 신호입니다. 이 신호의 기본 바인딩은 Alt + Up 및 Escape입니다.
팝업 이것은 콤보 상자 목록을 팝업하기 위해 방출되는 키 바인딩 신호입니다. 이 신호의 기본 바인딩은 Alt + Down입니다.

ComboBox의 데모를위한 두 가지 예제 코드는 다음과 같습니다.

예 1

이 예제에서 ListStore는 인기있는 Python GUI 툴킷의 이름으로 채워지며 ComboBox 위젯과 연결됩니다. 사용자가 선택하면 변경된 신호가 방출됩니다. 사용자의 선택을 표시하는 콜백 함수와 연결됩니다.

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()

실행시 프로그램은 다음 출력을 표시합니다.

예 2

프로그램의 두 번째 버전은 편의 방법을 사용합니다. combo_box_new_text()콤보 상자를 만들고 그 안에 문자열을 추가하는 append_text () 함수를 만듭니다. 두 프로그램 모두에서get_active_text() 메소드는 사용자의 선택을 가져오고 창의 레이블에 표시하는 데 사용됩니다.

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()

이 프로그램의 출력은 이전 프로그램의 출력과 유사합니다.