Gtk.AspectFrame
Gtk.AspectFrame是一个长宽比例不变的Frame
继承关系
Gtk.AspectFrame是Gtk.Frame的直接子类
Methods
方法修饰词 | 方法名及参数 |
---|---|
static | new (label, xalign, yalign, ratio, obey_child) |
set (xalign, yalign, ratio, obey_child) |
Virtual Methods
Properties
Name | Type | Flags | Short Description |
---|---|---|---|
obey-child | bool | r/w/en | 是否强制改变长款比例以匹配子部件的布局 |
ratio | float | r/w/en | 长宽比例,如果obey_child 为False |
xalign | float | r/w/en | 0.0左对齐,1.0右对齐 |
yalign | float | r/w/en | 0.0上对齐,1.0下对齐 |
Signals
Name | Short Description |
---|
例子
代码:
#!/usr/bin/env python3
# Created by xiaosanyu at 16/7/7
# section 026
TITLE = "AspectFrame"
DESCRIPTION = """
The Gtk.AspectFrame is useful when you want pack a widget so that it can resize
but always retains the same aspect ratio. For instance,
one might be drawing a small preview of a larger image
"""
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class AspectFrameWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="AspectFrame Example")
self.set_border_width(10)
grid = Gtk.Grid()
grid.set_column_spacing(20)
grid.set_row_spacing(20)
grid.set_column_homogeneous(True)
grid.set_row_homogeneous(True)
for i in range(3):
for j in range(3):
frame = Gtk.Frame.new("xalign=%s,yalign=%s,ratio=%s" % (i * 0.5, j * 0.5, j + 1))
frame.set_shadow_type(Gtk.ShadowType.ETCHED_OUT)
child = Gtk.AspectFrame.new(label="", xalign=i * 0.5, yalign=j * 0.5,
ratio=j + 1,
obey_child=False)
frame.set_size_request(200, 200)
child.add(Gtk.Button("button"))
frame.add(child)
grid.attach(frame, j, i, 1, 1)
self.add(grid)
def main():
win = AspectFrameWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
if __name__ == "__main__":
main()
例子比较简单,不做详述
第一列,长宽比为1:1
第二列,长宽比为2:1
第三例,长宽比为3:1