PyGTK - класс Paned
Класс Paned - это базовый класс для виджетов, которые могут отображать две настраиваемые панели либо по горизонтали (gtk.Hpaned), либо по вертикали (gtk.Vpaned). Дочерние виджеты на панели добавляются с помощью методов pack1 () и pack2 ().
Виджет с панорамированием рисует ползунок-разделитель между двумя панелями и предоставляет ручку для регулировки их относительной ширины / высоты. Если для свойства resize дочернего виджета внутри панели установлено значение 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 имеет фокус, вызывающий активацию дочернего виджета с фокусом. |
отменить позицию | Это излучается, когда 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()
Приведенный выше код сгенерирует следующий вывод -