PyGTK - Lớp được phân loại
Lớp Paned là lớp cơ sở cho các widget có thể hiển thị hai ngăn có thể điều chỉnh theo chiều ngang (gtk.Hpaned) hoặc theo chiều dọc (gtk.Vpaned). Các widget con vào các ngăn được thêm vào bằng cách sử dụng phương thức pack1 () và pack2 ().
Tiện ích con được phân loại vẽ một thanh trượt phân cách giữa hai ngăn và cung cấp một tay cầm để điều chỉnh chiều rộng / chiều cao tương đối của chúng. Nếu thuộc tính thay đổi kích thước của tiện ích con bên trong một ngăn được đặt thành Đúng, nó sẽ thay đổi kích thước theo kích thước của các ngăn.
Các phương pháp sau có sẵn cho HPaned cũng như lớp VPaned:
Paned.add1 (con) - Điều này thêm tiện ích được chỉ định bởi child lên trên cùng hoặc ngăn bên trái
Paned.add2 (con) - Điều này thêm tiện ích được chỉ định bởi child ở dưới cùng hoặc ngăn bên phải.
Paned.pack1 (con, thay đổi kích thước, thu nhỏ) - Điều này thêm tiện ích được chỉ định bởi childlên trên cùng hoặc ngăn bên trái với các tham số. Nếuresize Là True, childsẽ được thay đổi kích thước khi tiện ích con được phân tách được thay đổi kích thước. Nếushrink Là True, child có thể được làm nhỏ hơn yêu cầu kích thước tối thiểu của nó.
Paned.pack2 (con, thay đổi kích thước, thu nhỏ) - Điều này đặt vị trí của dải phân cách giữa hai ngăn.
Cả hai loại tiện ích con Paned đều phát ra các tín hiệu sau:
chấp nhận vị trí | Điều này được phát ra khi paned có tiêu điểm khiến tiện ích con có tiêu điểm được kích hoạt. |
hủy bỏ vị trí | Điều này được phát ra khi Esc phím được nhấn trong khi paned có tiêu điểm. |
tay cầm di chuyển | Điều này được phát ra khi paned có tiêu điểm và dấu phân cách được di chuyển. |
Thí dụ
Ví dụ sau sử dụng tiện ích gtk.Hpaned. Trong ngăn bên trái, một tiện ích TreeView được thêm vào và trong ngăn bên phải, có một tiện ích TextView. Khi bất kỳ hàng nào trong TreeView được chọn, nó sẽ phát ra tín hiệu row_activate được kết nối với một hàm gọi lại. Cácon_activated()function truy xuất văn bản của hàng và hiển thị trong bảng xem văn bản.
Quan sát mã -
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()
Đoạn mã trên sẽ tạo ra kết quả sau: