PyGTK-Paned 클래스
Paned 클래스는 두 개의 조정 가능한 창을 가로 (gtk.Hpaned) 또는 세로 (gtk.Vpaned)로 표시 할 수있는 위젯의 기본 클래스입니다. pack1 () 및 pack2 () 메서드를 사용하여 창에 자식 위젯을 추가합니다.
패닝 된 위젯은 두 창 사이에 구분 슬라이더를 그리고 상대적인 너비 / 높이를 조정하는 핸들을 제공합니다. 창 안에있는 자식 위젯의 크기 조정 속성이 True로 설정되어 있으면 창 크기에 따라 크기가 조정됩니다.
다음 방법은 HPaned 및 VPaned 클래스에서 사용할 수 있습니다.
Paned.add1 (child)-지정된 위젯을 추가합니다. child 상단 또는 왼쪽 창으로
Paned.add2 (child)-지정된 위젯을 추가합니다. child 아래쪽 또는 오른쪽 창에.
Paned.pack1 (child, resize, shrink)-지정된 위젯을 추가합니다. child매개 변수가있는 상단 또는 왼쪽 창으로 이동합니다. 만약resize 이다 True, child패닝 된 위젯의 크기를 조정할 때 크기를 조정해야합니다. 만약shrink 이다 True, child 최소 크기 요청보다 작게 만들 수 있습니다.
Paned.pack2 (child, resize, shrink)-두 창 사이의 구분선 위치를 설정합니다.
두 유형의 Paned 위젯은 다음 신호를 방출합니다.
수용 위치 | 이것은 다음과 같은 경우에 방출됩니다. paned 포커스가있는 자식 위젯이 활성화되도록하는 포커스가 있습니다. |
취소 위치 | 이것은 Esc 키를 누른 상태에서 paned 초점이 있습니다. |
이동 핸들 | 이것은 다음과 같은 경우에 방출됩니다. paned 포커스가 있고 구분 기호가 이동합니다. |
예
다음 예제는 gtk.Hpaned 위젯을 사용합니다. 왼쪽 창에는 TreeView 위젯이 추가되고 오른쪽 창에는 TextView 위젯이 있습니다. TreeView에서 임의의 행을 선택하면 콜백 함수에 연결된 row_activated 신호를 방출합니다. 그만큼on_activated()function 행의 텍스트를 검색하고 텍스트보기 패널에 표시합니다.
코드 관찰-
import gtk, gobject
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("HPaned widget Demo")
self.set_default_size(250, 200)
vp = gtk.HPaned()
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
tree = gtk.TreeView()
languages = gtk.TreeViewColumn()
languages.set_title("GUI Toolkits")
cell = gtk.CellRendererText()
languages.pack_start(cell, True)
languages.add_attribute(cell, "text", 0)
treestore = gtk.TreeStore(str)
it = treestore.append(None, ["Python"])
treestore.append(it, ["PyQt"])
treestore.append(it, ["wxPython"])
treestore.append(it, ["PyGTK"])
treestore.append(it, ["Pydide"])
it = treestore.append(None, ["Java"])
treestore.append(it, ["AWT"])
treestore.append(it, ["Swing"])
treestore.append(it, ["JSF"])
treestore.append(it, ["SWT"])
tree.append_column(languages)
tree.set_model(treestore)
vp.add1(tree)
self.tv = gtk.TextView()
vp.add2(self.tv)
vp.set_position(100)
self.add(vp)
tree.connect("row-activated", self.on_activated)
self.connect("destroy", gtk.main_quit)
self.show_all()
def on_activated(self, widget, row, col):
model = widget.get_model()
text = model[row][0]
print text
buffer = gtk.TextBuffer()
buffer.set_text(text+" is selected")
self.tv.set_buffer(buffer)
if __name__ == '__main__':
PyApp()
gtk.main()
위의 코드는 다음 출력을 생성합니다.