RustでGtk+ 3.x

gtk-rs/gtk: GTK+ 3.x bindings and wrappers for Rust

gtk-rs/gtkを使ってみます。

開発を始める前にビルドするためにGtkのツールキットが必要なのでインストールします。

Requirements - Gtk-rs

$ brew install gtk+3

(LinuxやWindowsでも動作するみたいです)

embed.ly

を参考に簡単な例を作ってみます。

$ cargo new hello --bin

Cargo.tomlをexamplesのようにします。

[dependencies]
glib = "^0"
gdk = "^0"
gdk-pixbuf = "^0"
gtk = "^0"
cairo-rs = "^0"

[features]
#default = ["gtk_3_18"]
gtk_3_10 = ["gtk/v3_10"]
gtk_3_16 = ["gtk_3_10", "gtk/v3_16"]
gtk_3_18 = ["gtk_3_16"] #for CI tools

src/main.rsをexamplesのbasicと同じ内容で書きます。

extern crate gtk;

use gtk::prelude::*;

fn main() {

    if gtk::init().is_err() {
        println!("Failed to initialize GTK.");
        return;
    }

    let window = gtk::Window::new(gtk::WindowType::Toplevel);

    window.set_title("First GTK+ Program");
    window.set_border_width(10);
    window.set_position(gtk::WindowPosition::Center);
    window.set_default_size(350, 70);

    window.connect_delete_event(|_, _| {
        gtk::main_quit();
        Inhibit(false)
    });

    let button = gtk::Button::new_with_label("Click me!");

    window.add(&button);

    window.show_all();
    gtk::main();
}
$ cargo build
$ cargo run

あっさり動きました。

どこまで実装されているのかわかりませんが、触っていってみようかと思っています。

Show comments

Adsense

Share

  • このエントリーをはてなブックマークに追加

About

趣味でプログラミングをしています。仕事では致し方なくC言語のようなC++を書いています。

Tags

Pages