2012-12-01 23 views
6

Tôi đang phát triển một trình xem hình ảnh khác bằng Python và Gtk và trình xem hiện rất đơn giản: nó bao gồm GtkWindow với GtkTreeView ở bên trái hiển thị danh sách hình ảnh của tôi và GtkImage ở bên phải, hiển thị hình ảnh thực tế. Càng xa càng tốt.Làm cách nào để thay đổi bố cục của ứng dụng Gtk trên toàn màn hình?

Bây giờ, tôi muốn đi toàn màn hình, và chỉ hiển thị hình ảnh với một nền đen vv

tôi có thể thấy một số cách để làm điều này:

  • tôi có thể ẩn() các cửa sổ, và hiển thị một lớn GtkImage thay vào đó, nhưng tôi mất tất cả những thứ mà tôi thiết lập trên cửa sổ trước (tín hiệu ví dụ), và tôi đang ẩn cửa sổ mà đi toàn màn hình, đó là một chút lạ;
  • Tôi có thể ẩn() nội dung của cửa sổ, xóa nội dung của cửa sổ (chỉ có thể có một con, theo như tôi biết?) Và đặt một số GtkImage vào bên trong (và làm ngược lại khi thoát chế độ toàn màn hình);
  • Tôi có thể thử chơi với các vùng chứa bên trong cửa sổ của mình và ẩn/hiển thị nội dung của chúng khi cửa sổ đang ở chế độ toàn màn hình/thoát toàn màn hình. Chính xác hơn, tôi đã nghĩ đến việc thêm một số khác GtkHBox làm con trực tiếp của cửa sổ của tôi, với hai con và chỉ hiển thị con đầu tiên ở chế độ "bình thường" và chỉ là chế độ thứ hai trên toàn màn hình.

Tất cả dường như hơi khó hiểu, vì vậy tôi tự hỏi điều gì sẽ là cách được đề xuất để xử lý loại tình huống này. Cảm ơn!

Trả lời

6

Tôi nghĩ cách đơn giản nhất để thực hiện việc này là có một bố cục với tất cả thiết lập tiện ích con của bạn và thiết lập tín hiệu. Sau đó, khi bạn chuyển sang và tắt chế độ toàn màn hình, bạn có một bộ tiện ích con mà bạn hiển thị và không hiển thị. Hãy thử trình diễn bên dưới. Đó là một thực hiện đơn giản mà đi vào và ra khỏi toàn màn hình khi bạn nhấn F11. HBox được sử dụng để tạo bố cục, có chứa nhãn ở bên trái và hình ảnh ở bên phải. Tôi đã điền nhãn với một số văn bản giả để nó chiếm một số lượng tốt của không gian. Khi bạn chuyển đổi vào và ra khỏi toàn màn hình, nó sẽ chuyển đổi khả năng hiển thị của nhãn và do đó làm cho hình ảnh hoặc là lấy bất động sản toàn màn hình hoặc chia sẻ nó với nhãn. Tôi chỉ sử dụng một trong những hình ảnh cổ phiếu đi kèm với gtk cho mục đích trình diễn. Dưới đây là hai ảnh chụp màn hình hiển thị bố cục trong và ngoài toàn màn hình.

import gtk 

def keypress(win, event): 
    if event.keyval == gtk.keysyms.F11: 
     win.is_fullscreen = not getattr(win, 'is_fullscreen', False) 
     action = win.fullscreen if win.is_fullscreen else win.unfullscreen 
     action() 
     label.set_visible(not win.is_fullscreen) 

win = gtk.Window() 
win.connect("delete-event", gtk.main_quit) 
win.connect('key-press-event', keypress) 
image = gtk.image_new_from_stock(gtk.STOCK_ABOUT, gtk.ICON_SIZE_DIALOG) 
label = gtk.Label(('test ' * 20 + '\n') * 20) 
vbox = gtk.HBox() 
vbox.add(label) 
vbox.add(image) 
win.add(vbox) 
win.show_all() 
gtk.main() 

cửa sổ bình thường

enter image description here

Toàn màn hình

enter image description here

+0

OK, đọc bài đăng của chúng tôi, tôi vừa nhận ra rằng tôi chỉ có 3 tiện ích/vùng chứa để ẩn/hiển thị trên toàn màn hình hay không. Vì vậy, chỉ cần bật tắt tầm nhìn của những người khi tôi thay đổi chế độ, như bạn đã làm trong ví dụ của bạn, là khá đủ ... –

+0

@multani vui mừng khi nghe nó làm việc ra cho bạn. –