En el mundo del desarrollo de interfaces gráficas (GUI) en Rust, GTK es una de las opciones más potentes y maduras gracias a sus bindings oficiales en gtk-rs. Este artículo explora cómo implementar controles básicos como botones, etiquetas y deslizadores, permitiendo crear aplicaciones interactivas de manera eficiente y segura.
¿Por qué GTK en Rust?
Instalación y Configuración
Primero, agrega las dependencias en tu Cargo.toml:
[dependencies]
gtk = { version = "0.8", features = ["v4_12"] }
gio = { version = "0.8", features = ["v2_90"] }
Ejecuta cargo build. En Linux, instala las dependencias del sistema con sudo apt install libgtk-4-dev (o equivalente).
Ejemplo Básico: Ventana con Botón y Etiqueta
Creemos una ventana simple donde un botón actualice una etiqueta.
use gtk::prelude::*;
use gtk::{Application, ApplicationWindow, Button, Label};
fn main() {
let app = Application::builder()
.application_id("com.ejemplo.gtk-rust")
.build();
app.connect_activate(build_ui);
app.run();
}
fn build_ui(app: &Application) {
let window = ApplicationWindow::builder()
.application(app)
.title("Controles GTK en Rust")
.build();
let label = Label::new(Some("¡Hola, Rust!"));
let button = Button::with_label("Haz clic");
button.connect_clicked(move |_| {
label.set_label("¡Botón presionado!");
});
window.set_child(Some(&button));
window.set_child(Some(&label));
window.present();
}
Este código crea una ventana con un botón que cambia el texto de la etiqueta al hacer clic.
Agregando Más Controles: Deslizador y Campo de Texto
Usemos un Scale (deslizador) para controlar un valor y un Entry para entrada de texto.
use gtk::{Box, Entry, Scale};
// Dentro de build_ui:
let vbox = Box::new(gtk::Orientation::Vertical, 10);
let entry = Entry::new();
let scale = Scale::with_range(gtk::Orientation::Horizontal, 0.0, 100.0, 1.0);
scale.connect_value_changed(move |s| {
entry.set_text(&format!("Valor: {:.0}", s.value()));
});
vbox.append(&entry);
vbox.append(&scale);
window.set_child(Some(&vbox));
Manejo de Eventos Avanzado
Conecta señales como changed o clicked usando closures con ownership seguro gracias a Rust.
Conclusión
GTK en Rust ofrece un equilibrio perfecto entre potencia y simplicidad para GUIs. Experimenta con widgets como ComboBox o TreeView para apps más complejas. ¡Comparte tus proyectos en los comentarios!
¿Quieres comentar?
Inicia sesión con Telegram para participar en la conversación