2011-01-21 13 views
9

Tôi có một khung nhìn tre ở phía bên trái của một chữ hpaned nhưng khi tôi cố gắng di chuyển thanh sang bên trái để làm cho ảnh nhỏ hơn kích thước tự động của nó thay vì thay đổi kích thước treeview nó mở rộng toàn bộ chương trình cửa sổ bên phải. có ý tưởng nào để sửa cái này không?Thay đổi kích thước gtk TreeView trong bài viết HPaned

Các phần có liên quan của nguồn như sau:

Đối với nội dung được đặt sẵn.

self.vpan = gtk.VPaned() 
    self.hpan = gtk.HPaned() 
    self.vpan.show() 
    self.hpan.show() 

    self.vBox1.pack_end(self.hpan, True, True, 0) 
    self.hpan.pack2(self.vpan,True, True) 

Và đối với chế độ xem dạng cây.

self.ftree = gtk.TreeStore(str,str,str) 
    self.treefill(None, os.path.abspath(os.path.dirname(__file__))) 

    self.tree = gtk.TreeView(self.ftree) 
    self.tvcolumn = gtk.TreeViewColumn('Project') 
    self.tree.append_column(self.tvcolumn) 
    self.cellpb = gtk.CellRendererPixbuf() 
    self.celltxt = gtk.CellRendererText() 

    self.tvcolumn.pack_start(self.cellpb,False) 
    self.tvcolumn.pack_start(self.celltxt,True) 

    self.tvcolumn.set_attributes(self.cellpb, stock_id=0) 
    self.tvcolumn.set_attributes(self.celltxt, text=1) 
    self.tvcolumn.set_resizable(True) 

    self.hpan.pack1(self.tree,True,True) 
    self.tree.show() 
+0

Tại sao nên di chuyển dấu phân cách sang phải, hãy tạo TreeView trong ngăn bên trái nhỏ hơn? Điều này gây nhầm lẫn ... –

+0

Ở bên trái, thực hiện điều chỉnh. – user381261

+0

Các vấn đề như thế này thường được giải quyết bằng cách điều chỉnh các thông số đóng gói, có thể là '.pack1 (..., False, True)'. Nếu điều này không hữu ích, hãy thử gọi 'set_size_request (0, 0)' trên một số tiện ích. –

Trả lời

2

Tôi sẽ trả lời câu hỏi này, sau đó tôi nhận ra câu trả lời của mình là câu trả lời lặp lại của người dùng. Nhưng, vì anh ta chưa đăng quyết định của mình như một câu trả lời, tôi sẽ làm thế. (Dưới đây là những gì tôi đã đăng nếu anh ta không tìm ra.)

Mở rộng và Điền dường như đang gây ra một chút chiến đấu cho không gian giữa các đối tượng khác nhau trong hộp này (như tôi giả định rằng tất cả các đối tượng của bạn làm điều này. Tôi cũng đã từng có thói quen đó, nhưng không có vấn đề gì.) Trong tài liệu PyGTK, "Mở rộng" được định nghĩa là

Đúng nếu trẻ được cấp thêm không gian cho hộp . Không gian thêm sẽ được chia đều giữa tất cả các trẻ em trong hộp sử dụng tùy chọn này.

và "Điền" như:

True nếu không gian cho trẻ em bằng cách tùy chọn mở rộng thực sự là phân bổ cho trẻ em, thay vì chỉ đệm nó. Tham số này không có hiệu lực nếu mở rộng được đặt thành Sai. Một đứa trẻ luôn được phân bổ đầy đủ chiều cao của gtk.Hộp và chiều rộng đầy đủ của gtk.VBox. Tùy chọn này ảnh hưởng đến thứ nguyên khác.

Vì vậy, về cơ bản, hộp cho mọi thứ cùng một không gian ... bạn cung cấp nhiều hơn một, nó mang lại cho nhau và tất cả các đối tượng mang nó và lớn hơn. Cửa sổ sau đó phải mở rộng để bù lại.

Để khắc phục điều này, hãy đặt một hoặc cả hai tùy chọn đó thành "Sai". Thiết lập "Mở rộng" thành "False" cũng sẽ tắt "Điền", nhưng chỉ thiết lập "Điền" thành "Sai" sẽ khiến hộp để cung cấp thêm không gian cho các đối tượng "Fill-False" làm đệm.