# Button (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
En knappkomponent vilken sänder ut en signal när den klickas på
Sebastian Rasmussen
sebras@gmail.com 2019
Anders Jonsson
anders.jonsson@norsjovallen.se 2021

# Button

En knappkomponent ansluten till en enkel återanropsfunktion.

# Kod som använts för att generera detta exempel

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow): # ett fönster

def __init__(self, app): Gtk.Window.__init__(self, title="GNOME Button", application=app) self.set_default_size(250, 50)

# en knapp button = Gtk.Button() # med en etikett button.set_label("Klicka på mig") # anslut ”clicked”-signalen som utges av knappen # till återanropsfunktionen do_clicked button.connect("clicked", self.do_clicked) # lägg till knappen till fönstret self.add(button)

# återanropsfunktion ansluten till knappens signal ”clicked” def do_clicked(self, button): print("Du klickade på mig!")

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)

# Användbara metoder för en Button-komponent

På rad 16 ansluts signalen `"clicked"` från knappen till återanropsfunktionen `do_clicked()` med `komponent.connect(signal, återanropsfunktion)`. Se för en utförligare förklaring.

`set_relief(Gtk.ReliefStyle.NONE)` ställer reliefstilen på kanterna för vår Gtk.Button till ingen - till skillnad från `Gtk.ReliefStyle.NORMAL`.

Om etiketten för knappen är en standardikon så ställer `set_use_stock(True)` in etiketten som namnet på motsvarande standardikon.

För att ställa in en bild (t.ex. en standardbild) för knappen `button`:

image = Gtk.Image() image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON) button.set_image(image)

Du bör inte ställa in en etikett för knappen efter detta, då kommer den visa etiketten och inte bilden.

Om vi använder `set_focus_on_click(False)` kommer knappen inte fånga fokus när den klickas på med musen. Detta kan vara användbart i platser som verktygsfält, så att tangentbordsfokus inte tas bort från programmets huvudområde.

# API-referenser

I detta exempel använde vi följande:

GtkButton

GtkWindow