9.2. Стрелки

Виджет Arrow рисует наконечник стрелки, направленный в одно из возможных направлений, в одном из возможных стилей. Его удобно помещать на кнопки во многих приложениях. Как и виджеты Label они не излучают сигналов.

Есть только 2 вызова для использования виджета Arrow:

  arrow = gtk.Arrow(arrow_type, shadow_type)

arrow.set(arrow_type, shadow_type)

Первый создаёт новую стрелку определённого типа и стиля. Второй позволяет поменять эти значения для уже созданного виджета. Аргумент arrow_type может содержать одно из следующих значений:

  ARROW_UP
ARROW_DOWN
ARROW_LEFT
ARROW_RIGHT

Эти значения очевидно указывают направление стрелки. Аргумент shadow_type может содержать одно из следующих значений:

  SHADOW_IN
SHADOW_OUT # по умолчанию
SHADOW_ETCHED_IN
SHADOW_ETCHED_OUT

Пример arrow.py кратко показывает их использование. Рисунок 9.2, “Пример кнопок-стрелок” показывает результат запуска программы:

Рисунок 9.2. Пример кнопок-стрелок

Arrows Buttons Examples

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

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # example arrow.py
  4.  
  5. import pygtk
  6. pygtk.require('2.0')
  7. import gtk
  8.  
  9. # Создаём стрелку с указанными параметрами
  10. # и размещаем её в кнопке
  11. def create_arrow_button(arrow_type, shadow_type):
  12. button = gtk.Button();
  13. arrow = gtk.Arrow(arrow_type, shadow_type);
  14. button.add(arrow)
  15. button.show()
  16. arrow.show()
  17. return button
  18.  
  19. class Arrows:
  20. def __init__(self):
  21. # Создаём новое окно
  22. window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  23.  
  24. window.set_title("Arrow Buttons")
  25.  
  26. # Хорошая мысль использовать это со всеми окнами.
  27. window.connect("destroy", lambda x: gtk.main_quit())
  28.  
  29. # Устанавливаем ширину границы окна.
  30. window.set_border_width(10)
  31.  
  32. # Создаём коробку содержащую стрелки/кнопки
  33. box = gtk.HBox(False, 0)
  34. box.set_border_width(2)
  35. window.add(box)
  36.  
  37. # Размещаем и показываем все наши виджеты
  38. box.show()
  39.  
  40. button = create_arrow_button(gtk.ARROW_UP, gtk.SHADOW_IN)
  41. box.pack_start(button, False, False, 3)
  42.  
  43. button = create_arrow_button(gtk.ARROW_DOWN, gtk.SHADOW_OUT)
  44. box.pack_start(button, False, False, 3)
  45.  
  46. button = create_arrow_button(gtk.ARROW_LEFT, gtk.SHADOW_ETCHED_IN)
  47. box.pack_start(button, False, False, 3)
  48.  
  49. button = create_arrow_button(gtk.ARROW_RIGHT, gtk.SHADOW_ETCHED_OUT)
  50. box.pack_start(button, False, False, 3)
  51.  
  52. window.show()
  53.  
  54. def main():
  55. gtk.main()
  56. return 0
  57.  
  58. if __name__ == "__main__":
  59. Arrows()
  60. main()
  61.