2012-12-01 29 views
6

Python ve Gtk kullanarak başka bir görüntü görüntüleyici geliştiriyorum ve izleyici şu anda çok basit: Ben GtkTreeView ile sol tarafımda görüntülerin listesini gösteren bir GtkWindow ve sağ tarafta bir GtkImage oluşur gerçek görüntü Çok uzak çok iyi. ŞimdiGtk uygulamasının düzenini tam ekran nasıl değiştirilir?

, ben tam ekran gidin ve arka planı siyah olan yalnızca görüntüyü vb

Bunu yapmanın birkaç yol görebilirsiniz istiyoruz:) (

  • Ben gizleyebilirsiniz pencere ve yerine büyük bir GtkImage görüntüler, ama daha önce pencerede kurduğum tüm şeyleri kaybediyorum (örneğin, sinyaller), ve ben tam ekrana giden pencereyi saklıyorum, bu biraz garip;
  • Pencerenin içeriğini gizleyebilirim(), pencerenin içeriğini kaldırabilirim (bildiğim kadarıyla sadece bir çocuğa sahip olabilirler) ve bunun yerine bir GtkImage koydum (ve tam ekrandan çıkmanın tersini yapalım));
  • Penceremde bulunan kapsayıcılarla oynamayı ve pencereyi tam ekran/tam ekran dolduğunda içeriklerini gizlemeye/göstermeye çalışabilirim. Daha doğrusu, penceremin doğrudan bir alt öğesi olarak başka bir GtkHBox ekleyerek, iki çocuk ile ve yalnızca "normal" modda ilk olanı ve yalnızca tam ekranın ikincisini görüntülemeyi düşünüyordum.

Her şey biraz bulanık görünüyor, bu yüzden bu tür bir durumla başa çıkmak için önerilen yolun ne olacağını merak ediyorum. Teşekkürler!

cevap

6

Bunu gerçekleştirmenin en kolay yolu, tüm widget'larınızın kurulumu ve sinyal ayarlarıyla tek bir düzene sahip olmaktır. Daha sonra, tam ekranı kapatıp açtığınızda görünür ve görünmeyen bir dizi widget'ınız vardır. Aşağıdaki gösteriyi deneyin. F11 tuşuna bastığınızda tam ekrana giren ve çıkan basit bir uygulama. Solda bir etiket ve sağda bir görüntü içeren düzeni yapmak için bir HBox kullanılır. Etiketi biraz sahte metinle doldurdum, böylece iyi bir yer kaplıyor. Tam ekranın içinde ve dışında geçiş yaptığınızda, etiketin görünürlüğünü değiştirir ve böylece görüntüyü ya tam ekran gayrimenkulünü alır ya da etiketle paylaşır. Sadece gösterim amacıyla gtk ile birlikte gelen stok görüntülerinden birini kullandım. Aşağıda, tam ekranın içine ve dışına yerleşimi gösteren iki ekran görüntüsü verilmiştir.

Kod

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() 

Normal pencere

enter image description here

Tam ekran

enter image description here

+0

Tamam, yazımızı okuyarak, sadece tam ekran üzerinde gizlemek/göstermek için 3 widget/kapama sahip olduğumu fark ettim. Yani, modunu değiştirdiğim zamanların görüşünü değiştirmek, örneğinizde yaptığınız gibi, oldukça yeterli ... –

+0

@multani, sizin için çalıştığını duyduğumuza sevindim. –