PyGobject(四十)布局容器之Viewport

  • GtkViewport
    • 继承关系
    • Methods
    • Virtual Methods
    • Properties
    • Signals
    • 例子

Gtk.Viewport

Gtk.Viewport滚动适配器。如果一个部件自带有滚动能力,如Gtk.TextView, Gtk.TreeView, Gtk.IconView, 他们可以通过Gtk.Container.add()方法添加到Gtk.ScrolledWindow中;如果部件没有自带的滚动能力,如Gtk.Grid, Gtk.Box等,如果他们需要滚动,则必须先添加到Gtk.Viewport中,然后再添加到Gtk.ScrolledWindow中。
不过如果一个没有实现Gtk.Scrollable的部件通过Gtk.Container.add()方法添加到Gtk.ScrolledWindow中,会自动先将其添加到Gtk.Viewport中。所以你可以忽略Gtk.Viewport的存在

继承关系

Gtk.Viewport是Gtk.Bin和Gtk.Scrollable的直接子类
PyGobject(四十)布局容器之Viewport_第1张图片

Methods

方法修饰词 方法名及参数
static new (hadjustment, vadjustment)
get_bin_window ()
get_hadjustment ()
get_shadow_type ()
get_vadjustment ()
get_view_window ()
set_hadjustment (adjustment)
set_shadow_type (type)
set_vadjustment (adjustment)

Virtual Methods

Properties

Name Type Flags Short Description
shadow-type Gtk.ShadowType r/w/en Determines how the shadowed box around the viewport is drawn

Signals

Name Short Description

例子

PyGobject(四十)布局容器之Viewport_第2张图片
代码:

#!/usr/bin/env python3
# Created by xiaosanyu at 16/7/7
# section 057
TITLE = "Viewport"
DESCRIPTION = """
The Gtk.Viewport widget acts as an adaptor class, implementing scrollability for child widgets
that lack their own scrolling capabilities.
Use Gtk.Viewport to scroll child widgets such as Gtk.Grid, Gtk.Box, and so on
"""
import gi

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gio, GLib


class ViewportWindow(Gtk.Window):
    def __init__(self, *args, **kwargs):
        Gtk.Window.__init__(self, title="Viewport Demo")
        self.set_default_size(100, 200)

        sw = Gtk.ScrolledWindow()
        sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        viewport = Gtk.Viewport()
        box = Gtk.VBox()
        viewport.add(box)
        sw.add(viewport)
        for i in range(100):
            box.add(Gtk.Button("Button" + str(i)))
        self.add(sw)


def main():
    win = ViewportWindow()
    win.connect("delete-event", Gtk.main_quit)
    win.show_all()
    Gtk.main()


if __name__ == "__main__":
    main()

代码解析:

将100个Button放到VBox当中,然后将box添加到Viewport当中,在将Viewport添加到ScrolledWindow当中,实现滚动。





代码下载地址:http://download.csdn.net/detail/a87b01c14/9594728

你可能感兴趣的:(PyGObject,PyGobject详解)