我該如何實現它?我一直在尋找它30分鐘,發現不起作用或惡劣工作的例子。我只是想改變窗口的背景圖像而不改變其他對話窗口的背景等等?但我希望按鈕和標籤在該背景下透明。GTK更改窗口的背景圖像
2
A
回答
6
我發現,在爲我工作的一個Python的例子:
http://islascruz.org/html/index.php/blog/show/Image-as-background-in-a-Gtk-Application..html
代碼
#!/usr/bin/env python
import gtk
def draw_pixbuf(widget, event):
path = '/home/markuz/wallpapers/WMwall1024x768.gif'
pixbuf = gtk.gdk.pixbuf_new_from_file(path)
widget.window.draw_pixbuf(widget.style.bg_gc[gtk.STATE_NORMAL], pixbuf, 0, 0, 0,0)
window = gtk.Window()
window.set_title('Drawing Test')
window.set_size_request(640,480)
window.connect('destroy',gtk.main_quit)
hbbox = gtk.HButtonBox()
window.add(hbbox)
hbbox.connect('expose-event', draw_pixbuf)
button = gtk.Button('Press Me!')
hbbox.pack_start(button, True, False, 10)
window.show_all()
gtk.main()
我還發現在一個C例如:
http://www.gtkforums.com/viewtopic.php?t=446
代碼
GtkWidget *SetupWindow(gchar *data,gboolean Transient)
{
GdkPixmap *background;
GdkPixbuf *pixbuf;
GdkScreen *ourscreen;
GdkColormap *colormap;
GtkStyle *style;
GdkColor fg;
GdkColor bg;
GError *error = NULL;
GdkRectangle *rect;
GtkWidget *window;
pixbuf = gdk_pixbuf_new_from_file ("pics/fb.png",&error);
if (error != NULL) {
if (error->domain == GDK_PIXBUF_ERROR) {
g_print ("Pixbuf Related Error:\n");
}
if (error->domain == G_FILE_ERROR) {
g_print ("File Error: Check file permissions and state:\n");
}
g_printerr ("%s\n", error[0].message);
exit(1);
}
gdk_pixbuf_render_pixmap_and_mask (pixbuf, &background, NULL, 0);
style = gtk_style_new();
style->bg_pixmap[0] = background;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), data);
// gtk_window_maximize(GTK_WINDOW(window));
gtk_window_set_modal (GTK_WINDOW (window),TRUE);
gtk_window_set_default_size(GTK_WINDOW(window),640,480);
gtk_widget_set_style (GTK_WIDGET(window), GTK_STYLE(style));
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS);
gtk_container_set_border_width(GTK_CONTAINER(window), 14);
if(Transient==TRUE)
gtk_window_set_transient_for(GTK_WINDOW (window),GTK_WINDOW(mainwindow));
gtk_widget_show (window);
return(window);
}
但我沒有嘗試。
0
它的工作原理!
import re,os, time, socket, datetime, threading, subprocess, fileinput, gobject, gst, gtk, logging
logging.basicConfig(filename='/var/tmp/log.log',level=logging.DEBUG)
gobject.threads_init()
def thread1(s):
logging.debug("uploading")
os.system("""/var/tmp/upload.download.largest.sh %s %s &""" % (s[1], s[2]))
class server(object):
def __init__(self):
button_rc = """
pixmap_path "/var/tmp"
# 1) Background > Image > change the logo.png
style "window" {
bg_pixmap[NORMAL] = "logo.png"
}
# imports
widget_class "GtkWindow" style "window"
"""
""" Window """
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440))
self.window.set_size_request(1280, 720)
self.window.set_border_width(1)
self.window.set_decorated(False)
self.window.set_title("server")
self.window.move(0,0)
self.window.set_name("main window")
gtk.rc_parse_string(button_rc) # 2) important line for the background image
self.window.connect("delete-event", gtk.main_quit)
self.window.connect ('button-press-event',self.callback)
self.window.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.POINTER_MOTION_MASK| gtk.gdk.POINTER_MOTION_HINT_MASK)
self.window.show_all()
self.window.set_keep_above(True)
if(self.window.get_window().get_state() == gtk.gdk.WINDOW_STATE_MAXIMIZED):
self.window.unmaximize()
def callback(self):
logging.debug("uploading")
def quit(self, window):
gtk.main_quit()
def run(self):
gtk.main()
if __name__=='__main__':
t = server()
t.run()
的
相關問題
- 1. 更改窗口背景uicolor
- 2. 如何更改單聲道(GTK)中的窗口背景顏色?
- 3. Gtk3窗口背景圖像
- 4. 在C#代碼中更改WPF窗口背景圖像
- 5. 無法更改窗口的背景
- 6. 設置openGL窗口的背景圖像
- 7. 更改圖像背景
- 8. jquery更改背景圖像
- 9. onClick更改背景圖像
- 10. Android:更改窗口小部件背景
- 11. 更改窗口背景顏色
- 12. 窗口是否有像背景圖像那樣的背景圖像?
- 13. 使背景圖像適合窗口
- 14. 背景圖像不灌裝窗口
- 15. 背景圖像和窗口大小
- 16. 窗口背景圖像模糊效果
- 17. 改變窗口背景色
- 18. gtk繪圖設置背景圖像
- 19. 更改窗口背景的alpha,而不是整個窗口
- 20. Gtk#背景圖片
- 21. 更改背景圖像像滑塊
- 22. 使我的gtk按鈕更像窗口
- 23. 動態更改圖像視圖背景
- 24. 試圖渲染GTK +窗口到圖像
- 25. 更改div的背景圖像ERROR
- 26. 更改背景圖像的序列
- 27. 更改元素的背景圖像
- 28. 更改UIToolbar的背景圖像
- 29. 的UIView更改背景顏色圖像
- 30. 更改TTThumbsViewController的背景顏色/圖像
可能重複的[GTK圖形集的背景圖像(http://stackoverflow.com/questions/3150706/gtk-drawing-set-background-image) – ptomato 2011-04-28 15:38:03