Как я могу отображать текст в значке состояния вместо установки значка?

#python #gtk #pygtk

#python #gtk #pygtk

Вопрос:

Я начинающий разработчик в Gtk, а также в Python. Я пытаюсь создать gtk.Значок состояния отображает текстовую строку вместо значка. Как я могу добиться этого с помощью PixBuf или любым другим способом?

Спасибо.

Ответ №1:

Пример использования 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.Значок состояния автоматически уменьшает размер пиксельного буфера, так что ширина и высота будут меньше, чем ограничение по высоте. Это серьезно ограничивает объем текста, который вы можете эффективно отображать с помощью Gtk.Значок состояния.

Смотрите https://github.com/PaulSD/Tray_Apps/tree/master/gtktrayicon для библиотеки (которая может быть установлена в дополнение к Gtk), которая предоставляет API для реализации более общих апплетов в системном трее и поддерживает текстовые строки произвольной длины. Смотрите https://github.com/PaulSD/Tray_Apps для примера кода, который использует эту библиотеку.

Ответ №2:

Это возможно — на ум приходят две идеи:

a.) Используйте закадровую GtkLabel, а затем вызовите gdk_pixbuf_get_from_drawable (gtk_widget_get_snapshot (label)) (GdkPixmap — это GdkDrawable.) Это выполнит XGetImage для получения пикселей с X-сервера.

б.) Или вы могли бы использовать Cairo для рисования текста в pixbuf — это метод, который использовался для значка статуса клавиатуры в GNOME:http://blogs.gnome.org/sudaltsov/category/general /

Комментарии:

1. Спасибо за предложения. Я посмотрю на Cairo’s one