本文整理汇总了Python中horizons.gui.widgets.imagebutton.ImageButton类的典型用法代码示例。如果您正苦于以下问题:Python ImageButton类的具体用法?Python ImageButton怎么用?Python ImageButton使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ImageButton类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _create_build_buttons
def _create_build_buttons(self, building_id, container):
# {{mode}} in double braces because it is replaced as a second step
building_type = Entities.buildings[building_id]
build_button = ImageButton(name="build{id}".format(id=building_id), helptext=building_type.get_tooltip())
build_button.path = "icons/buildmenu/{id:03d}".format(id=building_id)
build_button.capture(Callback(self.build_related, building_id))
return build_button
示例2: _create_build_buttons
def _create_build_buttons(self, building_id, container):
# {{mode}} in double braces because it is replaced as a second step
helptext = self.instance.session.db.get_building_tooltip(building_id)
build_button = ImageButton(name="build{id}".format(id=building_id), helptext=helptext)
build_button.path = "icons/buildmenu/{id:03d}".format(id=building_id)
build_button.capture(Callback(self.build_related, building_id))
return build_button
示例3: __init__
def __init__(self):
self.page_widgets = {}
self.widget = load_uh_widget(self.widget_xml, center_widget=True)
# Lists holding pickbelt ImageButtons, placed to the left/right of the book
self.buttons = {'left': [], 'right': []}
for i, (name, text) in enumerate(self.sections):
self.page_widgets[i] = self.widget.findChild(name=name)
# Create the required pickbelts
for i, (name, text) in enumerate(self.sections):
for side in self.buttons:
pickbelt = ImageButton(text=text)
pickbelt.name = name + '_' + side
pickbelt.path = 'images/background/pickbelt_%s' % side
pickbelt.font = "pickbelt"
pickbelt.capture(Callback(self.update_view, i), event_name="mouseClicked")
start_x, start_y = self.pickbelt_start_pos
pickbelt.position = (start_x + 5*i, start_y + 70*i)
container = self.widget.findChild(name="%s_pickbelts" % side)
container.addChild(pickbelt)
self.buttons[side].append(pickbelt)
self.widget.show() # Hack to initially setup the pickbelts properly
self.update_view()
self.widget.hide() # Hack to initially setup the pickbelts properly
示例4: draw_widget
def draw_widget(self):
"""
Updates whole messagewidget (all messages): draw icons.
Inactive messages need their icon hovered to display their text again
"""
button_space = self.widget.findChild(name="button_space")
button_space.removeAllChildren() # Remove old buttons
for index, message in enumerate(self.active_messages):
if (self.item + index) >= len(self.active_messages):
# Only display most recent notifications
continue
button = ImageButton()
button.name = str(index)
button.path = message.path
# show text on hover
events = {
button.name + "/mouseEntered": Callback(self.show_text, index),
button.name + "/mouseExited": self.hide_text,
}
# init callback to something callable to improve robustness
callback = Callback(lambda: None)
if message.x is not None and message.y is not None:
# move camera to source of event on click, if there is a source
callback = Callback.ChainedCallbacks(
callback, # this makes it so the order of callback assignment doesn't matter
Callback(self.session.view.center, message.x, message.y),
Callback(self.session.ingame_gui.minimap.highlight, (message.x, message.y) )
)
if message.type == "logbook":
# open logbook to relevant page
callback = Callback.ChainedCallbacks(
callback, # this makes it so the order of callback assignment doesn't matter
Callback(self.session.ingame_gui.logbook.show, message.created)
)
if callback:
events[button.name] = callback
button.mapEvents(events)
button_space.addChild(button)
button_space.resizeToContent()
self.widget.size = button_space.size
示例5: _init_tabs
def _init_tabs(self):
"""Add enough tabbuttons for all widgets."""
def on_tab_removal(tabwidget):
# called when a tab is being removed (via weakref since tabs shouldn't have references to the parent tabwidget)
# If one tab is removed, the whole tabwidget will die..
# This is easy usually the desired behavior.
if tabwidget():
tabwidget().on_remove()
# Load buttons
for index, tab in enumerate(self._tabs):
# don't add a reference to the
tab.add_remove_listener(Callback(on_tab_removal, weakref.ref(self)))
container = Container(name="container_%s" % index)
background = Icon(name="bg_%s" % index)
button = ImageButton(name=str(index), size=(50, 50))
if self.current_tab is tab:
background.image = tab.button_background_image_active
button.path = tab.path_active
else:
background.image = tab.button_background_image
button.path = tab.path
button.capture(Callback(self._show_tab, index))
if hasattr(tab, 'helptext') and tab.helptext is not None:
button.helptext = tab.helptext
container.size = background.size
container.addChild(background)
container.addChild(button)
self.content.addChild(container)
self.widget.size = (50, 55*len(self._tabs))
self.widget.adaptLayout()
self._apply_layout_hack()
示例6: create_resource_selection_dialog
def create_resource_selection_dialog(
on_click, inventory, db, widget="select_trade_resource.xml", res_filter=None, amount_per_line=None
):
"""Returns a container containing resource icons.
@param on_click: called with resource id as parameter on clicks
@param inventory: to determine fill status of resource slots
@param db: main db instance
@param widget: which xml file to use as a template. Default: tabwidget. Required
since the resource bar also uses this code (no tabs there though).
@param res_filter: callback to decide which icons to use. Default: show all
@param amount_per_line: how many resource icons per line. Default: try to fit layout
"""
from horizons.gui.widgets.imagefillstatusbutton import ImageFillStatusButton
dummy_icon_path = "icons/resources/none_gray"
dlg = load_uh_widget(widget)
icon_size = ImageFillStatusButton.ICON_SIZE # used for dummy button
cell_size = ImageFillStatusButton.CELL_SIZE
button_width = cell_size[0]
vbox = dlg.findChild(name="resources")
amount_per_line = amount_per_line or vbox.width // button_width
# Add the zero element to the beginning that allows to remove the currently
# sold/bought resource:
resources = [0] + db.get_res(only_tradeable=True)
current_hbox = HBox(name="hbox_0", padding=0)
index = 1
for res_id in resources:
# don't show resources that are already in the list
if res_filter is not None and not res_filter(res_id):
continue
# on click: add this res
cb = Callback(on_click, res_id)
# create button (dummy one or real one)
if res_id == 0 or inventory is None:
reset_button = ImageButton(max_size=icon_size, name="resource_icon_00")
reset_button.path = dummy_icon_path
button = Container(size=cell_size)
# add the "No Resource" image to the container, positioned in the top left
button.addChild(reset_button)
# capture a mouse click on the container. It's possible to click on the
# image itself or into the empty area (below or to the right of the image)
button.capture(cb, event_name="mouseClicked")
button.name = "resource_%d" % res_id
else:
amount = inventory[res_id]
filled = int(float(inventory[res_id]) / float(inventory.get_limit(res_id)) * 100.0)
button = ImageFillStatusButton.init_for_res(
db, res_id, amount=amount, filled=filled, uncached=True, use_inactive_icon=False, showprice=True
)
button.button.capture(cb)
button.button.name = "resource_%d" % res_id
current_hbox.addChild(button)
if index % amount_per_line == 0:
vbox.addChild(current_hbox)
box_id = index // amount_per_line
current_hbox = HBox(name="hbox_%s" % box_id, padding=0)
index += 1
vbox.addChild(current_hbox)
vbox.adaptLayout()
return dlg