标签: gtk2

响应 GTK+ 3 中的主题更改

某些应用程序可以实时响应 GTK+ 主题更改。例如,Thunar、Geany、lxrandr、Hexchat 都会在主题更改时更新它们的 UI,例如在 lxappearance 中。这些都是 GTK+ 2 程序。

另一方面,到目前为止,我尝试过的所有 GTK+ 3 程序(包括 baobab、moserial gucharmap、ghex、pamac、evince、xreader)似乎无法重新加载主题,需要重新启动应用程序。

lxappearance(gtk2在我的系统上编译)正在发送一个 GTK+“信号”(不是 100% 在 GTK-land 中的术语)以导致应用程序重新加载:

// src/lxappearance.c line 198
static void reload_all_programs()
{
#if GTK_CHECK_VERSION(3, 0, 0)

/* TODO Port this to something else than gdk_event_send_clientmessage_toall */

#else
    GdkEventClient event;
    event.type = GDK_CLIENT_EVENT;
    event.send_event = TRUE;
    event.window = NULL;

    if( app.use_lxsession )
    {
        event.message_type = gdk_atom_intern_static_string("_LXSESSION");
        event.data.b[0] = 0;    /* LXS_RELOAD */
    }
    else
    {
        /* if( icon_only )
            event.message_type = …
Run Code Online (Sandbox Code Playgroud)

gtk themes gtk2 gtk3 gnome-3

5
推荐指数
0
解决办法
1844
查看次数

在PyGTK中,显示PNG文件的简单方法是什么?

以下PyGTK代码在窗口中显示PNG文件.

是否有更简单或更好的方式显示PNG文件,例如,使用gtk.DrawingArea?例如,如何调整文件大小?

import gtk
import pygtk
pygtk.require('2.0')

class Gui:

    def __init__(self):

        # Create an Image object for a PNG file.
        file_name = "file.png"
        pixbuf = gtk.gdk.pixbuf_new_from_file(file_name)
        pixmap, mask = pixbuf.render_pixmap_and_mask()
        image = gtk.Image()
        image.set_from_pixmap(pixmap, mask)

        # Create a window.
        window = gtk.Window()
        window.set_title("PNG file")
        window.connect("destroy", gtk.main_quit)

        # Show the PNG file in the window.
        window.add(image)
        window.show_all()

if __name__ == "__main__":
    Gui()
    gtk.main()
Run Code Online (Sandbox Code Playgroud)

致谢:我使用网络上其他人的代码创建了上述代码.

python gtk png pygtk gtk2

4
推荐指数
1
解决办法
2727
查看次数

获取当前gtk样式的颜色

我使用 PyGTK,我想获取小部件的颜色(例如背景颜色),我运行这样的代码:

gdkColorToRgb = lambda gc: (gc.red//257, gc.green//257, gc.blue//257)
widget = gtk.HBox() ## for example
style = widget.get_style()
for i in range(5):
    print i, gdkColorToRgb(style.bg[i])
Run Code Online (Sandbox Code Playgroud)

但它没有给出我当前的 gtk 主题(样式)的颜色。这似乎是默认的 gtk 主题(我当前的主题是深色的,而此代码给出了浅色)我使用 ArchLinux 和 PyGTK 2.24.0 (GTK 2.24.5)

python themes pygtk colors gtk2

4
推荐指数
1
解决办法
1603
查看次数

gtk_main()和unix套接字

我正在使用C和unix低级套接字处理聊天应用程序.我已经成功制作了控制台版本,但我想为应用程序制作一个GUI.我想将GTK用于GUI.我的问题是如何"同步"套接字和GUI.因为我必须调用gtk_main()作为最后一个GTK语句,并且应用程序本身是一个无限循环.如何在收到消息时更新GUI?

sockets linux gtk gtk2

4
推荐指数
1
解决办法
2833
查看次数

gtk 网络教程/资源/示例

现在有没有人可以找到一些关于 gtk/glib 网络的好的教程/代码示例。我正在尝试编写一个客户端应用程序,该应用程序连接到一个简单的服务器,该服务器使用 Gtk2 回显它接收到的内容,但我不知道如何去做。我想在不使用线程的情况下进行异步读/写,但我不确定什么是最好的方法。API 参考没有太大帮助 - GIOChannel、GIOStream、GSocketClient 等 - 使用哪一个?

回退是在另一个线程中使用阻塞 IO。

我对便携性不感兴趣。

“咆哮:GTk / GLib 开发人员如何期望人们在没有良好文档的情况下使用他们的框架?当我可以使用 QT 来做时,我为什么还要费心。我不想学习更多的 C,这就是我费心的原因!”

c linux gobject glib gtk2

4
推荐指数
1
解决办法
2310
查看次数

GTK +(2.0) - 在GtkEntry上"点击"了信号?

我用GTK + 2.0测试了一些信号.我正在寻找一种方法来点击GtkEntry时发出信号.

if (widgets_info[i].action & IG_INPUT)
    {
      widget->frame[i] = gtk_entry_new_with_max_length(MAX_INPUT_LENGTH);
      gtk_entry_set_text(widget->frame[i], widgets_info[i].text);
      catch_signal(widget->frame[i], MY_SIGNAL, &change_entry, widget);
    }
Run Code Online (Sandbox Code Playgroud)

我的条目(widgets_info[i].text)中有一个预先选择的文本,如果用户单击我的GtkEntry,我希望此文本消失.

有人知道这个信号是什么吗?

(对不起我的英语不好)

gtk signals click gtk2 gtkentry

4
推荐指数
1
解决办法
2302
查看次数

覆盖GTK工具栏/小部件

我正在使用GTK + 2.0和Cairo在C中编写自定义应用程序.仅用于学习目的(如果成功,然后用于部署),我希望重新创建类似于覆盖工具栏/窗口小部件(我很抱歉,如果术语不正确),当鼠标移动到窗口上的给定区域时出现,当鼠标移开时消失.正如我想象的那样,工具栏应该出现在现有小部件的顶部,而不会替换它们或以任何方式改变小部件包装.有可能完成吗?如果是,请您指出相关的教程/示例和/或概述一种方法来做同样的事情?提前致谢.

gtk overlay widget gtk2 cairo

4
推荐指数
1
解决办法
1596
查看次数

Gtk-ERROR**:检测到GTK + 2.x符号

我正在用gcc编译我的c应用程序,并带有以下标志:

gcc evis.c `pkg-config --cflags --libs gtk+-2.0 --libs clutter-gtk-1.0 --libs gthread-2.0` -Wall -o evis
Run Code Online (Sandbox Code Playgroud)

现在我的代码编译了一些警告,但仍然完成.当我尝试运行我的程序时,我得到:

(evis:1820): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
Run Code Online (Sandbox Code Playgroud)

如何解决此错误?我怎么知道在哪里看?我可以使用某种工具在我的代码中扫描GTK3符号吗?我正在使用GTK + 2进行编译,所以我不明白这是怎么回事.

c linux gcc gtk2 gtk3

4
推荐指数
1
解决办法
1万
查看次数

gtkmm程序看起来很糟糕

我和朋友们一起使用gtkmm在C++中编写了一个简单的照片查看器.一切都进展顺利,除了我们的应用程序看起来很差,与我们的Linux桌面上的任何其他GTK +应用程序完全不同.如果有人能就我们做错了什么给我们一些建议,我们将非常感激.

负责创建窗口的代码在这里(其余的在存储库中):https: //github.com/jjkrol/ZPR/blob/master/src/gui.cpp

屏幕截图:
屏幕截图http://i39.tinypic.com/ktatc.png

任何帮助都会感激不尽,提前谢谢!

c++ gtk gtk2 gtkmm gtk3

3
推荐指数
1
解决办法
387
查看次数

Cairo.ImageSurface 到 Gdk.Pixbuf?

试图从 ImageSurface 创建 Pixbuf,但我得到的只是黑色像素。有任何想法吗?

Cairo.ImageSurface surface = mysurface;
int w = surface.Width;
int h = surface.Height;
Gdk.Pixmap pixmap = new Gdk.Pixmap(null, w, h, 24);
using (Cairo.Context cr = Gdk.CairoHelper.Create(pixmap)) {
     cr.Operator = Cairo.Operator.Source;
     cr.SetSource(surface);
     cr.Paint();
}
_pixbuf = Gdk.Pixbuf.FromDrawable(pixmap, Gdk.Colormap.System, 0, 0, 0, 0, w, h);
Run Code Online (Sandbox Code Playgroud)

gtk gtk2 cairo gdk pixbuf

3
推荐指数
1
解决办法
2569
查看次数

标签 统计

gtk2 ×10

gtk ×7

gtk3 ×3

linux ×3

c ×2

cairo ×2

pygtk ×2

python ×2

themes ×2

c++ ×1

click ×1

colors ×1

gcc ×1

gdk ×1

glib ×1

gnome-3 ×1

gobject ×1

gtkentry ×1

gtkmm ×1

overlay ×1

pixbuf ×1

png ×1

signals ×1

sockets ×1

widget ×1