Strumenti Utente

Strumenti Sito


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