Events
Custom events can be added to guizero widgets to call functions when the user takes the following actions:
- when clicked -
when_clicked - when double clicked -
when_double_clicked - when the left mouse button is pressed -
when_left_button_pressed - when the left mouse button is released -
when_left_button_released - when the right mouse button is pressed -
when_right_button_pressed - when the right mouse button is released -
when_right_button_released - when a key is pressed -
when_key_pressed - when a key is released -
when_key_released - when the mouse enters a widget -
when_mouse_enters - when the mouse leaves a widget -
when_mouse_leaves - when the mouse is dragged across a widget -
when_mouse_dragged - when the widget is resized -
when_resized
Events are set by assigning them to a function:
def do_this():
print("The widget was clicked")
widget.when_clicked = do_this
Event Data
The function which is called can also accept a parameter and will be passed data about the event which occurred.
The event data returned has:
widget- the guizero widget which raised the eventtk_event- the tkinter event objectkey- the key which raised the eventx- the mouse's x position relative to the widget when the event occurredy- the mouse's y position relative to the widget when the event occurreddisplay_x- the mouse's x position on the display when the event occurreddisplay_y- the mouse's y position on the display when the event occurredwidth- the width of the widget.height- the height of the widget.keycode- the keycode of the key which raised the event.
Note: only data relevant to the event will be returned. e.g. key is only returned for when_key_# events and width and height are only returned for when_resized events.
def clicked(event_data):
print("widget clicked = ", event_data.widget)
print("mouse position = ", event_data.x, ".", event_data.y)
widget.when_clicked = clicked
Example
Highlight a text box widget by changing its background color (bg) when the mouse is hovering over it.
from guizero import App, TextBox
def highlight():
text_box.bg = "lightblue"
def lowlight():
text_box.bg = "white"
app = App()
text_box = TextBox(app)
# When the mouse enters the TextBox
text_box.when_mouse_enters = highlight
# When the mouse leaves the TextBox
text_box.when_mouse_leaves = lowlight
app.display()