Cette barre de statut vous informe si vous cliquez sur le bouton ou si vous appuyez sur n'importe quelle touche (et sur quelle touche).
from gi.repository import Gtk
from gi.repository import Gdk
import sys
class MyWindow(Gtk.ApplicationWindow):
# a window
def __init__(self, app):
Gtk.Window.__init__(self, title="StatusBar Example", application=app)
self.set_default_size(200, 100)
# a label
label = Gtk.Label(label="Press any key or ")
# a button
button = Gtk.Button(label="click me.")
# connected to a callback
button.connect("clicked", self.button_clicked_cb)
# the statusbar
self.statusbar = Gtk.Statusbar()
# its context_id - not shown in the UI but needed to uniquely identify
# the source of a message
self.context_id = self.statusbar.get_context_id("example")
# we push a message onto the statusbar's stack
self.statusbar.push(
self.context_id, "Waiting for you to do something...")
# a grid to attach the widgets
grid = Gtk.Grid()
grid.set_column_spacing(5)
grid.set_column_homogeneous(True)
grid.set_row_homogeneous(True)
grid.attach(label, 0, 0, 1, 1)
grid.attach_next_to(button, label, Gtk.PositionType.RIGHT, 1, 1)
grid.attach(self.statusbar, 0, 1, 2, 1)
# add the grid to the window
self.add(grid)
# callback function for the button clicked
# if the button is clicked the event is signaled to the statusbar
# onto which we push a new status
def button_clicked_cb(self, button):
self.statusbar.push(self.context_id, "You clicked the button.")
# event handler
def do_key_press_event(self, event):
# any signal from the keyboard is signaled to the statusbar
# onto which we push a new status with the symbolic name
# of the key pressed
self.statusbar.push(self.context_id, Gdk.keyval_name(event.keyval) +
" key was pressed.")
# stop the signal emission
return True
class MyApplication(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self)
def do_activate(self):
win = MyWindow(self)
win.show_all()
def do_startup(self):
Gtk.Application.do_startup(self)
app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)
La méthode Gdk.keyval_name(event.keyval)
convertit la valeur des touches event.keyval
en noms symboliques. Les noms et les valeurs correspondantes des touches se trouvent ici. À titre d'exemple, GDK_KEY_BackSpace
devient la chaîne « Retour arrière »
.
In line 17 the signal "clicked"
is connected to the callback function button_clicked_cb()
using widget.connect(signal, callback function)
. See for a more detailed explanation.
La fonction pop(context_id)
efface le premier message de la pile de la barre de statut avec le context_id
donné.
La méhode remove_all(context_id)
efface tous les messages de la pile de la barre de statut ayant l'identifiant context_id
donné.
La méthode remove(context_id, message_id)
efface le message de la pile de la barre de statut avec le context_id
donné. Le message_id
est renvoyé par push(context_id, lemessage)
quand il pousse le message dans la barre des statut.
Dans cet exemple, les éléments suivants sont utilisés :
GtkStatusbar
Gdk - Key Values