Перспектива (gtk.AspectFrame)

Виджет AspectFrame похож на виджет Frame, за тем исключением что он позволяет фиксировать соотношение сторон (ширины к высоте) помещаемых в него виджетов, добавлять дополнительное место если это необходимо. Используется он, например, если вы хотите сделать предварительный просмотр большого изображения. Размер области просмотра должен варьироваться когда пользователь меняет размеры окна, но соотношение сторон всегда должно оставаться оригинальным.

Для создания нового AspectFrame используйте:

  aspect_frame = gtk.AspectFrame(label=None, xalign=0.5, yalign=0.5, ratio=1.0, obey_child=True)

label определяет текст отображаемый на метке, xalign и yalign определяют выравнивание также, как и в виджете gtk.Alignment. Если obey_child равен True, то соотношение сторон gtl.AspectFrame будет соответствовать соотношению сторон помещённого внурть виджета. А если False, то соотношение задаётся аргументом ratio (соотношение ширины к высоте).

Для изменения параметров существующего AspectFrame, вы можете использовать:

  aspect_frame.set(xalign=0.0, yalign=0.0, ratio=1.0, obey_child=TRUE)

Пример aspectframe.py использует AspectFrame для  отображения области, с  соотношением сторон 2:1. Здесь неважно как пользователь меняет размер окна. Рисунок 10.5, “Пример AspectFrame” показывает внешний вид окна:

Рисунок 10.5. пример AspectFrame

Aspect Frame Example

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# example aspectframe.py
 
import pygtk
pygtk.require('2.0')
import gtk
 
class AspectFrameExample:
    def __init__(self):
        window = gtk.Window(gtk.WINDOW_TOPLEVEL);
        window.set_title("Aspect Frame")
        window.connect("destroy", lambda x: gtk.main_quit())
        window.set_border_width(10)
 
        # Создаём aspect_frame и добавляем его на окно
        aspect_frame = gtk.AspectFrame("2x1", # label
                                       0.5, # center x
                                       0.5, # center y
                                       2, # xsize/ysize = 2
                                       False) # ignore child's aspect
        window.add(aspect_frame)
        aspect_frame.show()
 
        # теперь добавляем виджет на aspect_frame
        drawing_area = gtk.DrawingArea()
 
        # Запрашиваем окно 200х200, но AspectFrame даёт нам только 200х100
        # т.к. мы указали соотношение 2:1
        drawing_area.set_size_request(200, 200)
        aspect_frame.add(drawing_area)
        drawing_area.show()
        window.show()
 
def main():
    gtk.main()
    return 0
 
if __name__ == "__main__":
    AspectFrameExample()
    main()
Предыдущая страница На уровень выше  Следующая страница
10.5. Рамка (gtk.Frame) К оглавлению  10.7. Делимое окно (gtk.HPaned, gtk.VPaned)

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

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

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