2. Komma igång¶
2.1. Enkelt exempel¶
För att starta med vår handledning skapar vi det enklast tänkbara programmet. Detta program kommer skapa ett tomt fönster som är 200 x 200 bildpunkter stort.
1 2 3 4 5 6 7 8 9 | import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk win = Gtk.Window() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main() |
Vi kommer nu förklara varje rad i exemplet.
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
I början måste vi importera Gtk-modulen för att kunna komma åt GTK+:s klasser och funktioner. Då en användares system kan ha flera versioner av GTK+ installerade samtidigt så vill vi säkerställa att då vi importerar Gtk så refererar det till GTK+ 3 och inte någon annan version av biblioteket, vilket är syftet med satsen gi.require_version('Gtk', '3.0')
.
Nästa rad skapar ett tomt fönster.
win = Gtk.Window()
Följt av att ansluta till fönstrets borttagningshändelse för att säkerställa att programmet stängs om vi klickar på x för att stänga fönstret.
win.connect("destroy", Gtk.main_quit)
I nästa steg visar vi fönstret.
win.show_all()
Slutligen startar vi GTK+-bearbetningsslingan som vi avslutar när fönstret stängs (se rad 6).
Gtk.main()
För att köra programmet, öppna en terminal, ändra till filens katalog, och mata in:
python simple_example.py
2.2. Utökat exempel¶
För något som är lite mer användbart kommer här PyGObject-versionen av det klassiska ”Hej världen”-programmet.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk class MyWindow(Gtk.Window): def __init__(self): super().__init__(title="Hello World") self.button = Gtk.Button(label="Click Here") self.button.connect("clicked", self.on_button_clicked) self.add(self.button) def on_button_clicked(self, widget): print("Hello World") win = MyWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main() |
Detta exempel skiljer sig från det enkla exemplet då vi gör en underklass till Gtk.Window
för att skapa vår egen klass MyWindow
.
class MyWindow(Gtk.Window):
I klassens konstruktor måste vi anropa superklassens konstruktor. Dessutom säger vi till den att ställa in värdet på egenskapen title till Hello World.
super().__init__(title="Hello World")
De nästa tre raderna används för att skapa en knappkomponent, ansluta till dess clicked-signal och lägga till den som barn till toppnivåfönstret.
self.button = Gtk.Button(label="Click Here")
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)
På det viset kommer metoden on_button_clicked()
att anropas om du klickar på knappen.
def on_button_clicked(self, widget):
print("Hello World")
Det sista blocket, utanför klassen, är väldigt likt det enkla exemplet ovan, men istället för att skapa en instans av den generiska klassen Gtk.Window
, så skapar vi en instans av MyWindow
.