2011-07-08 38 views
5

GTK + câu hỏi noob ở đây:Tuỳ chỉnh GtkFileChooser

Nó sẽ có thể tùy biến GtkFileChooserButton hoặc GtkFileChooserDialog để loại bỏ phần 'Vị trí' (bên trái) và 'Địa điểm' hộp nhập trên đầu?

Điều tôi đang cố gắng làm là cho phép người dùng chọn tệp chỉ từ một thư mục cụ thể (mà tôi đã đặt bằng cách sử dụng gtk_file_chooser_set_current_folder) và vô hiệu điều hướng đến các vị trí khác trên hệ thống tệp.

Đây là hộp thoại chọn tập tiêu chuẩn: The standard GtkFilechooser Dialog

Đây là những gì tôi cần: enter image description here

Trả lời

5

Nó không giống như thế là có thể với hộp thoại chọn tập tin tiêu chuẩn. Ví dụ, here là một tài liệu thảo luận tại sao một điều như vậy sẽ hữu ích và làm thế nào nó có thể được thực hiện, nhưng ý tưởng không bao giờ làm cho nó thành hiện thực.

Bạn có thể làm gì, có thể viết hộp thoại của riêng bạn thực hiện giao diện GtkFileChooser, dựa trên mã GtkFileChooserDialog nhưng ẩn thanh vị trí và danh sách dấu trang.

4

Bạn có thể xử lý trên từng cá nhân bằng cách tìm ra nơi có gtkparasite và sau đó truy cập chúng bằng get_children.

Đảm bảo sử dụng .show() thay vì .run() để kiểm tra hộp thoại bằng gtkparasite. Nếu bạn sử dụng .run() hộp thoại được hiển thị ở chế độ phương thức, do đó bạn không thể kiểm tra nó.

Ví dụ tôi giấu con đường và widget Places với những điều khoản dưới đây:

dialog = gtk.FileChooserDialog("Open***", None, gtk.FILE_CHOOSER_ACTION_OPEN, 
      (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN, gtk.RESPONSE_OK)) 
dialog.set_show_hidden(True) 
dialog.set_default_response(gtk.RESPONSE_OK)  
vbox = dialog.get_children()[0].get_children()[0].get_children([0].get_children()[0] 
vbox.get_children()[0].hide() 
vbox.get_children()[2].get_children()[0].hide() 

Tất nhiên đây không phải là một API bị lộ nên nó luôn luôn có thể phá vỡ từ những thay đổi cơ bản.

Hy vọng nó làm cho cảm giác ...

Cố gắng gửi một hình ảnh nhưng tôi là một người dùng mới ....