Всплывающие подсказки (gtk.Tooltips)

Всплывающие подсказки (Tooltip) это небольшие строки текста, которые появляются когда вы задерживаете указатель над кнопкой или другим виджетом на несколько секунд

Виджеты не принимающие события (которые не имеют своего окна) не работают со всплывающими подсказками.

Сначала мы создадим новую всплывающую подсказку. Вам нужно сделать это всего один раз для набора всплывающих подсказок, так как объект возвращаемый gtk.Tooltips может быть использован для создания множества всплывающих подсказок.

  tooltips = gtk.Tooltips()

Как только вы создали новую всплывающую подсказку, и виджет, на котором вы хотите её использовать, просто вызывайте:

  tooltips.set_tip(widget, tip_text, tip_private=None)

Объект tooltips это всплываемая подсказка созданная вами. Первый аргумент (widget) это виджет, на который вы хотите включить всплывающую подсказку; второй (tip_text), это текст который вы хотите отобразить. Последний аргумент (tip_private) это текстовая строка используемая как идентификатор.

Пример tooltip.py улучшает программу arrow.py и добавляет всплывающие подсказки к каждой из кнопок. Рисунок 9.3, “Пример всплывающих подсказок” показывает окно программы с всплывающей подсказкой второй кнопки:

Рисунок 9.3. Пример всплывающих подсказок

Tooltips Example

Исходный код tooltip.py:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# example tooltip.py

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

# Создаём стрелку с указанными параметрами
# и размещаем её в кнопке
def create_arrow_button(arrow_type, shadow_type):
    button = gtk.Button()
    arrow = gtk.Arrow(arrow_type, shadow_type)
    button.add(arrow)
    button.show()
    arrow.show()
    return button

class Tooltips:
    def __init__(self):
        # Создаём новое окно
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)

        window.set_title("Подсказки")

        # Хорошая мысль делать это со всеми окнами.
        window.connect("destroy", lambda w: gtk.main_quit())

        # Устанавливаем ширину границы окна.
        window.set_border_width(10)

        # Создаём коробку для кнопок/стрелок
        box = gtk.HBox(False, 0)
        box.set_border_width(2)
        window.add(box)

        # Создаём объект tooltips
        self.tooltips = gtk.Tooltips()

        # Размещаем и показываем виджеты
        box.show()

        button = create_arrow_button(gtk.ARROW_UP, gtk.SHADOW_IN)
        box.pack_start(button, False, False, 3)
        self.tooltips.set_tip(button, "gtk.SHADOW_IN")

        button = create_arrow_button(gtk.ARROW_DOWN, gtk.SHADOW_OUT)
        box.pack_start(button, False, False, 3)
        self.tooltips.set_tip(button, "gtk.SHADOW_OUT")
  
        button = create_arrow_button(gtk.ARROW_LEFT, gtk.SHADOW_ETCHED_IN)
        box.pack_start(button, False, False, 3)
        self.tooltips.set_tip(button, "gtk.SHADOW_ETCHED_IN")
  
        button = create_arrow_button(gtk.ARROW_RIGHT, gtk.SHADOW_ETCHED_OUT)
        box.pack_start(button, False, False, 3)
        self.tooltips.set_tip(button, "gtk.SHADOW_ETCHED_OUT")

        window.show()

def main():
    gtk.main()
    return 0

if __name__ == "__main__":
    tt = Tooltips()
    main()

Есть и другие методы для работы с всплывающими подсказками. Просто перечислим их с краткими объяснениями.

  tooltips.enable()

Включение выключенного набора всплывающих подсказок.

  tooltips.disable()

Выключение включенного набора подсказок.

  tooltips.set_delay(delay)

Устанавливает количество миллисекунд, на которые нужно задержать курсор мыши, прежде чем появится подсказка. По умолчанию 500 мс (половина секунды).

Это все методы связанные со всплывающими подсказками. Больше чем вы хотели бы знать :-)


Предыдущая страница На уровень выше  Следующая страница
9.2. Стрелка (gtk.Arrow) К оглавлению  9.4. Индикатор прогресса (gtk.ProgressBar)

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>