2012-12-01 31 views
6

私はPythonとGtkを使って別の画像ビューアを開発しています。ビューアは現在とてもシンプルです:GtkWindow、画像のリストを表示する左側にGtkTreeView、右側にGtkImage実際の画像。ここまでは順調ですね。Gtkアプリケーションのレイアウトをフルスクリーンで変更する方法は?

さて、私は

をフルスクリーンで行くのが好き、そして黒の背景に画像のみを表示する、などでしょう私はこれを行うにはいくつかの方法を参照することができます

  • を私は(非表示にすることができます)大きなウィンドウを表示し、代わりに大きなGtkImageを表示しますが、前にウィンドウに設定したすべてのものを失っています(たとえば信号など)、私はフルスクリーンになるウィンドウを隠しています。
  • ウィンドウの内容を削除して(私が知っている限り、子を1人しか持てない)ウィンドウの内容を削除し、代わりにGtkImageを入れます(そして、元のフルスクリーン);
  • ウィンドウ内のコンテナで再生し、ウィンドウが全画面表示/全画面表示を終了しているときにコンテンツを非表示にすることができます。もっと正確に言えば、もう1つの子供を持つ私のウィンドウの直接の子としてGtkHBoxを追加し、最初のものだけを「通常」モードで表示し、2番目のもののみをフルスクリーンで表示することを考えていました。

このような状況を処理するには、どのような方法が推奨されるのでしょうか。ありがとう!

答えて

6

これを実装する最も簡単な方法は、すべてのウィジェットのセットアップと信号の設定を1つのレイアウトにすることだと思います。次に、フルスクリーンの表示と非表示を切り替えると、表示され、表示されない一連のウィジェットが表示されます。以下のデモンストレーションを試してみてください。 F11を押すとフルスクリーンに出入りする簡単な実装です。レイアウトにはHBoxが使用され、左にラベル、右にイメージが含まれます。私はいくつかのダミーテキストでラベルを埋めるので、十分なスペースを取ることができます。全画面の表示/非表示を切り替えると、ラベルの表示が切り替えられ、画像がフルスクリーンの不動産になるか、ラベルと共有されます。デモの目的でgtkに付属しているストック画像のうちの1つを使用しました。以下は、フルスクリーンのレイアウトを示す2つのスクリーンショットです。

コード

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

通常のウィンドウ

enter image description here

フルスクリーン

enter image description here

+0

OK、私たちの投稿を読んで、私はちょうど3つのウィジェット/コンテナがフルスクリーンで表示/非表示になっていることに気づいた。だから、私がモードを変えたときに、あなたの例のように、それらの可視性をトグルするだけで十分です。 –

+0

@multaniはそれがあなたのために働いたと聞いてうれしいです。 –

関連する問題