Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在状态图标上显示文本而不是设置图标?_Python_Gtk_Pygtk - Fatal编程技术网

Python 如何在状态图标上显示文本而不是设置图标?

Python 如何在状态图标上显示文本而不是设置图标?,python,gtk,pygtk,Python,Gtk,Pygtk,我是Gtk和Python的初学者。我正在尝试创建一个gtk.StatusIcon,它显示一个文本字符串来代替图标。我如何使用PixBuf或任何其他方法来实现这一点 谢谢。这是可能的-我想到了两个想法: a、 )使用屏幕外的GtkLabel,然后调用gdk_pixbuf_get_from_drawable(gtk_widget_get_snapshot(label))(GdkPixmap是GdkDrawable)。这将执行XGetImage以从X服务器获取像素 b、 )或者您可以使用Cairo向p

我是Gtk和Python的初学者。我正在尝试创建一个gtk.StatusIcon,它显示一个文本字符串来代替图标。我如何使用PixBuf或任何其他方法来实现这一点


谢谢。

这是可能的-我想到了两个想法:

a、 )使用屏幕外的GtkLabel,然后调用
gdk_pixbuf_get_from_drawable(gtk_widget_get_snapshot(label))
(GdkPixmap是GdkDrawable)。这将执行XGetImage以从X服务器获取像素


b、 )或者您可以使用Cairo向pixbuf绘制文本-这是GNOME中用于键盘状态图标的技术:

使用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会自动缩小PixBuf,以便宽度和高度都小于高度限制。这严重限制了使用Gtk.StatusIcon可以有效显示的文本量


有关提供API以实现更通用的系统托盘小程序并支持任意长度文本字符串的库(可在Gtk之外安装)的信息,请参阅。有关使用此库的示例代码,请参阅。

谢谢您的建议。我要看一看开罗的