2012-07-27 7 views
5

aktivieren Ich erstelle ein einfaches Terminal in Python mit vte.Terminal. Ich möchte eine gewisse Transparenz im Terminalhintergrund haben, aber set_opacity funktioniert nicht. aber es funktioniert in Terminator und anderen Terminals.wie Transparenz in vte.Terminal

window.set_opacity macht das ganze Fenster transparent, aber ich will nicht, dass der Titel-bat transparent ist. hier ist der Code.

#!/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

Haben Sie jemals diese beantwortet bekommen? Ich habe das gleiche Problem. – weberc2

Antwort

0

Das folgende Codefragment löste dieses Problem.

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

obwohl ich für das Programm mit Vala endded und es hatte genannt eine einfache Funktion set_visual.

Hoffe, das hilft

+0

Ich habe damit herumgespielt ... Ich kann das Terminal selbst transparent machen, aber sobald ich ein ScrolledWindow zwischen das Hauptfenster und das Terminal Widget setze, wird es wieder undurchsichtig, selbst wenn ich ScrollledWindow.set_opacity (0). Ich benutze auch Vala. – weberc2