2012-07-27 4 views
5

私はvte.Terminalを使ってPythonで単純な端末を作成しています。 ターミナルのバックグラウンドで透明度を一定にしたいが、set_opacityは機能しません。 ですが、ターミネータや他の端末で動作します。vte.Terminalで透過を有効にする方法

window.set_opacityはウィンドウ全体を透明にしますが、タイトルバットを透明にしたくありません。 ここにコードがあります。

#!/usr/bin/env python 

import vte 
import gtk 
import pango 
import os 
import signal 

window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
window.connect('destroy', lambda w: gtk.main_quit()) 
# initial window size 
window.resize(640, 480) 

terminal = vte.Terminal() 
terminal.connect("child-exited", lambda w: gtk.main_quit()) 

# here you can set backscroll buffer 
terminal.set_scrollback_lines(5000) 
# encoding for console 
terminal.set_encoding("UTF-8") 
terminal.set_cursor_blinks(False) 

# here you can set background image 
#terminal.set_background_image_file("some/background/picture/here") 

# transparency 
terminal.set_opacity (45000) 
# font for terminal 
font = pango.FontDescription() 
font.set_family("Ubuntu Mono") 
# font size 
font.set_size(11 * pango.SCALE) 
font.set_weight(pango.WEIGHT_NORMAL) 
font.set_stretch(pango.STRETCH_NORMAL) 

terminal.set_font_full(font, True) 

child_pid = terminal.fork_command() 

scroll = gtk.ScrolledWindow() 
scroll.set_policy(0,1) 
scroll.add_with_viewport(terminal) 

window.add(scroll) 
window.show_all() 

# This must be here! before gtk.main() 
# here you can set columns count (first param) 
terminal.set_size(500,0) 

try: 
    gtk.main() 
except KeyboardInterrupt: 
    pass 
+0

この回答をお持ちですか?私は同じ問題を抱えています。 – weberc2

答えて

0

次のスニペットはこの問題を解決しました。

colormap = window.get_screen().get_rgba_colormap() 
if colormap == None: 
    colormap = window.get_screen().get_rgb_colormap() 
gtk.widget_set_default_colormap(colormap) 

This is how the window looks

私はプログラムのValaのを使ってendded、それはset_visualと呼ばれるシンプルな機能を持っていたが。

希望します。

+0

私はこれで遊んでいました...私はターミナルを透明にすることができますが、メインウィンドウとターミナルウィジェットの間にScrolledWindowを置くとすぐに、ScrolledWindow.set_opacity(0)を呼び出しても不透明になります。 )。私もValaを使っています。 – weberc2

関連する問題