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的直接子类
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 |
---|
例子
代码:
#!/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当中,实现滚动。