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 013
TITLE = "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 gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
items = ["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)
@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
设置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方法
@staticmethod
def on_menu_selected(widget, *args):
print("Menu item " + widget.get_label() + " was selected")
设置MenuButton点击时弹出这个菜单
button.set_popup(menu)
代码下载地址:http://download.youkuaiyun.com/detail/a87b01c14/9594728