programmazione:d:gtkd:hello_world
Questa è una vecchia versione del documento!
Hello world in GTK-D
Autore: Fabio Di Matteo
Ultima revisione: 03/07/2025 12:56
Un hello world che mostra le basi di una finestra GTK-D .
Trovo la documentazione un pochino carente al momento. Mi sono aiutato guardando gli esempi dentro la directory “demos” del repository ufficiale GtkD
Una semplice finestra con un bottone
import gtk.MainWindow; import gtk.Label; import gtk.Main; import gtk.Button; import std.stdio; void onClicked(Button b) { writeln("Cliccato."); } void main(string[] args) { Main.init(args); MainWindow win = new MainWindow("Hello World"); win.setDefaultSize(200, 100); auto mybtn=new Button(); mybtn.setLabel("Clicca"); mybtn.addOnClicked(delegate void(Button b){ onClicked(b); b.setLabel("Cliccato."); }); win.add(mybtn); win.showAll(); Main.run(); }
dub.json
{
"authors": [
"fabio"
],
"copyright": "Copyright © 2025, fabio",
"dependencies": {
"gtk-d": "~>3.11.0"
},
"description": "A minimal D application.",
"license": "GPL-2.0-only",
"name": "gtk3-builder"
}
Uso di Gtk Builder e Glade
import gio.Application: GioApplication = Application; import gtk.Application; import gtk.ApplicationWindow; import gtk.Builder; import gtk.Button; import gtk.Entry; import gtk.Label; import std.stdio; import core.stdc.stdlib; int main(string[] args) { auto application = new Application("org.gtkd.demo.builder.builderTest", GApplicationFlags.FLAGS_NONE); void initGui(GioApplication a) { auto builder = new Builder(); if( ! builder.addFromFile("gui.ui") ) { writeln("Oops, could not create Glade object, check your glade file ;)"); exit(1); } auto mywin = cast(ApplicationWindow)builder.getObject("mywin"); if (mywin is null) { writeln("mywin è null"); } mywin.setApplication(application); mywin.setTitle("This is a glade application window"); auto mylabel = cast(Label)builder.getObject("mylabel"); auto myentry = cast(Entry)builder.getObject("myentry"); auto mybutton = cast(Button)builder.getObject("mybutton"); mybutton.addOnClicked(delegate void(Button b){ string t= myentry.getText(); if (t!="") { mylabel.setLabel(t); }else{ mylabel.setLabel("Inserisci il testo nella entry e clicca sul bottone."); } }); mywin.showAll(); } application.addOnActivate(&initGui); return application.run(args); }
programmazione/d/gtkd/hello_world.1751543855.txt.gz · Ultima modifica: 03/07/2025 13:57 da Fabio Di Matteo
