PyGobject(十二)布局容器之Button篇——Gtk.MenuButton

来源:互联网 发布:仓管员用什么软件 编辑:程序博客网 时间:2024/06/05 03:59

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

Gtk.MenuButton

继承关系

Gtk.MenuButton菜单按钮,点击时可以弹出一个菜单或者气泡。Gtk.MenuButton是Gtk.ToggleButton的直接子类
这里写图片描述

Methods

方法修饰词 方法名及参数 static new () get_align_widget () get_direction () get_menu_model () get_popover () get_popup () get_use_popover () set_align_widget (align_widget) set_direction (direction) set_menu_model (menu_model) set_popover (popover) set_popup (menu) set_use_popover (use_popover)

Virtual Methods

Properties

Name Type Flags Short Description align-widget Gtk.Container r/w 菜单依附在哪个父容器上. direction Gtk.ArrowType r/w/en 设置气泡弹出的位置. menu-model Gio.MenuModel r/w The model from which the popup is made. popover Gtk.Popover r/w popover气泡 popup Gtk.Menu r/w menu下拉菜单. use-popover bool r/w/en 是否使用popover 来代替menu

Signals

Name Short Description

例子

这里写图片描述
这里写图片描述
代码:

#!/usr/bin/env python3# Created by xiaosanyu at 16/6/14# section 013TITLE = "MenuButton"DESCRIPTION = """The Gtk.MenuButton widget is used to display a popup when clicked on.This popup can be provided either as a Gtk.Menu, a Gtk.Popover or an abstract Gio.MenuModel."""import gigi.require_version('Gtk', '3.0')from gi.repository import Gtkitems = ["EditCopy", "EditPaste", "EditSomething"]class MenuButtonWindow(Gtk.Window):    def __init__(self):        Gtk.Window.__init__(self, title="MenuButton Demo")        self.set_border_width(10)        self.set_size_request(250, 200)        hbox = Gtk.VBox(spacing=6)        self.add(hbox)        button = Gtk.MenuButton("Menu Button popover")        # 距离顶部50        button.props.margin_top = 50        # set_direction 如果有多余空间才会在指定的方向上显示气泡        button.set_direction(Gtk.ArrowType.UP)        popover = self.create_popover(button, Gtk.Label("show popover"), Gtk.PositionType.TOP)        button.set_popover(popover)        hbox.pack_start(button, False, False, 0)        button = Gtk.MenuButton("Menu Button popup")        button.props.margin_bottom = 50        hbox.pack_end(button, False, False, 0)        menu = Gtk.Menu.new()        for item in items:            item = Gtk.MenuItem(label=item)            item.connect("activate", self.on_menu_selected)            item.show()            menu.append(item)        button.set_popup(menu)    @staticmethod    def create_popover(parent, child, pos):        popover = Gtk.Popover(relative_to=parent)        popover.set_position(pos)        popover.add(child)        popover.set_border_width(6)        child.show()        return popover    @staticmethod    def on_menu_selected(widget, *args):        print("Menu item " + widget.get_label() + " was selected")def main():    win = MenuButtonWindow()    win.connect("delete-event", Gtk.main_quit)    win.show_all()    Gtk.main()if __name__ == "__main__":    main()

创建第一个Gtk.MenuButton,设置距离容器顶部50

button = Gtk.MenuButton("Menu Button popover")button.props.margin_top = 50

设置在button上方弹出气泡

button.set_direction(Gtk.ArrowType.UP)

创建一个Gtk.Popover(气泡窗口)

popover = self.create_popover(button, Gtk.Label("show popover"), Gtk.PositionType.TOP)@staticmethoddef create_popover(parent, child, pos):    popover = Gtk.Popover(relative_to=parent)    popover.set_position(pos)    popover.add(child)    popover.set_border_width(6)    child.show()    return popover

设置MenuButton点击时弹出这个popover

button.set_popover(popover)

创建第二个Gtk.MenuButton

button = Gtk.MenuButton("Menu Button popup")

创建一个Gtk.Menu(菜单)

menu = Gtk.Menu.new()for item in items:    item = Gtk.MenuItem(label=item)    item.connect("activate", self.on_menu_selected)    item.show()    menu.append(item)

绑定每一个菜单项“activate”信号,点击时执行on_menu_selected方法

@staticmethoddef on_menu_selected(widget, *args):    print("Menu item " + widget.get_label() + " was selected")

设置MenuButton点击时弹出这个菜单

button.set_popup(menu)





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

0 0
原创粉丝点击