如何在状态图标上显示文本而不是设置图标?
我是一名刚入门的Gtk开发者,同时也在学习Python。我想创建一个gtk.StatusIcon,用文本字符串代替图标。请问我该如何使用PixBuf或者其他方法来实现这个呢?
谢谢。
2 个回答
4
下面是一个使用Python和GTK3的例子:
from gi.repository import Gtk
class TextStatusIcon:
def __init__(self):
self.statusicon = Gtk.StatusIcon()
self.statusicon.connect("popup-menu", self.right_click_event)
window = Gtk.OffscreenWindow()
window.add(Gtk.Label("text"))
window.connect("damage-event", self.draw_complete_event)
window.show_all()
def draw_complete_event(self, window, event):
self.statusicon.set_from_pixbuf(window.get_pixbuf())
def right_click_event(self, icon, button, time):
Gtk.main_quit()
TextStatusIcon()
Gtk.main()
不幸的是,大多数系统托盘对图标的高度限制得非常小,而Gtk.StatusIcon会自动缩小图像,这样宽度和高度都会小于这个高度限制。这就大大限制了你可以用Gtk.StatusIcon有效显示的文本量。
你可以查看这个链接 https://github.com/PaulSD/Tray_Apps/tree/master/gtktrayicon,这里有一个库(可以和Gtk一起安装),它提供了一个API,可以用来实现更通用的系统托盘小工具,并且支持任意长度的文本字符串。还有这个链接 https://github.com/PaulSD/Tray_Apps,里面有使用这个库的示例代码。
0
这是可能的,下面有两个想法:
a.) 可以使用一个屏幕外的 GtkLabel,然后调用 gdk_pixbuf_get_from_drawable (gtk_widget_get_snapshot (label))
(GdkPixmap 是一种 GdkDrawable)。这个方法会通过 XGetImage 从 X 服务器获取像素。
b.) 另外,你也可以使用 Cairo 来把文字绘制到 pixbuf 上——这个方法在 GNOME 的键盘状态图标中就用过:http://blogs.gnome.org/sudaltsov/category/general/