ホームページ >バックエンド開発 >Golang >GolangでGTKをビルドする方法

GolangでGTKをビルドする方法

PHPz
PHPzオリジナル
2023-04-25 10:42:201467ブラウズ

概要

Golang の人気が高まるにつれ、Golang を使用してデスクトップ アプリケーションを構築しようとする人が増えています。 Gtk は、クロスプラットフォーム GUI を作成するための人気のあるツールキットです。この記事では、Golang と Gtk を使用して GUI アプリケーションを迅速に構築する方法を紹介し、いくつかの基本的な Gtk コントロールの使用法を示します。

ステップ 1: Gtk をインストールする

完了する最初のタスクは、Gtk3 をインストールすることです。これはさまざまな方法で実行できますが、Ubuntu または Debian システムに Gtk3 をインストールする方法は次のとおりです。

 $ sudo apt-get update
 $ sudo apt-get install libgtk-3-dev

ステップ 2: 関連パッケージをインストールする

Golang を使用して Gtk アプリケーションを作成するには、次のパッケージをインストールする必要があります:

 $ go get -u github.com/gotk3/gotk3/gtk
 $ go get -u github.com/gotk3/gotk3/glib
 $ go get -u github.com/gotk3/gotk3/cairo

ステップ 3: メイン パッケージを作成するfunction

次に、作成する必要があるウィンドウやフレームなどを定義する main 関数を作成する必要があります。以下は、単純な Main 関数の例です。

 package main

 import (
  "github.com/gotk3/gotk3/gtk"
  "log"
 )

 func main() {
  // 初始化 Gtk
  gtk.Init(nil)

  // 创建新的窗口
  win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
  if err != nil {
    log.Fatal("无法创建窗口:", err)
  }

  // 设置窗口的标题
  win.SetTitle("我的第一个Golang Gtk应用程序")

  // 设置窗口的大小
  win.SetDefaultSize(800, 600)

  // 显示窗口
  win.Show()

  // 进入主循环
  gtk.Main()
 }

この例では、Main 関数の最も重要なタスクは、gtk.WindowNew を使用して新しいトップレベル ウィンドウを作成することです。この関数には、ウィンドウのタイプを指定する gtk.WindowType パラメーターが必要です。この場合、このパラメータとして gtk.WINDOW_TOPLEVEL を指定するだけで、メニュー バーやツールバーのない単純なウィンドウが作成されます。

ウィンドウが作成されたら、win.SetTitle と win.SetDefaultSize を使用してウィンドウのタイトルとサイズを設定できます。最後に、win.Show を使用して画面にウィンドウを表示します。最後に gtk.Main() ループを呼び出していることにも注意してください。これにより、ユーザーがウィンドウを閉じるまでウィンドウを開いたままにします。

ステップ 4: ボックスを作成する

これで、単純なウィンドウが作成されましたが、これは空のキャンバスです。ビューをより適切に整理するには、ウィンドウにいくつかのコントロールを追加する必要があります。 Gtk では、コントロールをボックスに追加することでこれを簡単に行うことができます。

Gtk は、GtkBox、GtkHBox、GtkVBox、GtkFrame の 4 つの異なるタイプのボックスを提供します。 GtkBox は、コントロールを水平または垂直に配置するために使用できる基本的なボックスです。 GtkHBox と GtkVBox は、一般的な水平および垂直レイアウトを実行するためのものです。 GtkFrame は、ラベルとシャドウを提供する特別なボックスです。

次は、GtkBox を新しいウィンドウに追加する例です:

 func main() {
     gtk.Init(nil)
     win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
     if err != nil {
         log.Fatal("无法创建窗口:", err)
     }
     win.SetTitle("我的第一个Golang Gtk应用程序")
     win.SetDefaultSize(800, 600)

     // 创建容器
     box, err := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 4)
     if err != nil {
         log.Fatal("无法创建盒子", err)
     }

     // 向盒子添加一个标签
     label, err := gtk.LabelNew("Hello, Golang!")
     if err != nil {
         log.Fatal("无法创建标签", err)
     }
     box.PackStart(label, true, true, 0)

     // 显示窗口和盒子
     win.Add(box)
     box.ShowAll()
     win.Show()
     gtk.Main()
 }

この例では、最初に垂直ボックスを作成します。 gtk.BoxNew を使用して、gtk.ORIENTATION_VERTICAL を指定し、2 番目のパラメーターを 4 に設定して、ボックス内の項目間の間隔を指定します。次に、新しいラベルを作成してボックスに追加し、最後にラベルのテキストを設定します。

最後のステップは、ウィンドウとボックスを表示することです。 win.Add メソッドを使用してボックスをウィンドウに追加し、box.ShowAll() メソッドを使用してボックス内のすべての要素を表示します。

ステップ 5: ボタンを追加する

ラベルに加えて、Gtk はボタン、テキスト ボックス、ドロップダウン リストなどのさまざまなコントロールもサポートしています。ウィンドウにボタンを追加しましょう。ウィンドウにボタンを追加する例を次に示します。

 func main() {
     gtk.Init(nil)
     win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
     if err != nil {
         log.Fatal("无法创建窗口:", err)
     }
     win.SetTitle("我的第一个Golang Gtk应用程序")
     win.SetDefaultSize(800, 600)

     box, err := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 4)
     if err != nil {
         log.Fatal("无法创建盒子", err)
     }

     button, err := gtk.ButtonNewWithLabel("点击我!")
     if err != nil {
         log.Fatal("无法创建按钮", err)
     }

     button.Connect("clicked", func() {
         log.Println("按钮被点击了!")
     })

     box.PackStart(button, false, false, 0)

     win.Add(box)
     box.ShowAll()
     win.Show()
     gtk.Main()
 }

この例では、まず gtk.ButtonNewWithLabel を使用して新しいボタンを作成し、ボタンのテキストを「Click me!」に設定します。次に、イベント ハンドラーを接続すると、ユーザーがボタンをクリックするたびにボタンからメッセージがコンソールに出力されます。

最後に、ボタンをウィンドウに追加し、2 番目のパラメーターを false に設定してコントロールを拡大しないことを示し、box.PackStart メソッドを使用してスペーサーの「ピクセル」値を追加します。

ステップ 6: 画像の追加

最後に、ウィンドウに画像を追加します。これは GtkImage を使用して簡単に行うことができます。ウィンドウに画像を追加する例を次に示します。

 func main() {
     gtk.Init(nil)
     win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
     if err != nil {
         log.Fatal("无法创建窗口:", err)
     }
     win.SetTitle("我的第一个Golang Gtk应用程序")
     win.SetDefaultSize(800, 600)

     box, err := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 4)
     if err != nil {
         log.Fatal("无法创建盒子", err)
     }

     button, err := gtk.ButtonNewWithLabel("点击我!")
     if err != nil {
         log.Fatal("无法创建按钮", err)
     }

     button.Connect("clicked", func() {
         log.Println("按钮被点击了!")
     })

     box.PackStart(button, false, false, 0)

     // 加载图像文件
     img, err := gtk.ImageNewFromFile("test.png")
     if err != nil {
        log.Fatal("无法加载图像", err)
     }

     box.PackStart(img, false, false, 0)

     win.Add(box)
     box.ShowAll()
     win.Show()
     gtk.Main()
 }

この例では、最初にボタンを作成し、それをボックスに追加します。次に、ローカル ファイル システムにある test.png ファイルをロードし、gtk.ImageNewFromFile を使用して新しい GtkImage インスタンスを作成します。最後に、box.PackStart メソッドを使用して画像をボックスに追加します。

結論

Gtk は、クロスプラットフォーム GUI アプリケーションの作成に使用できる人気の GUI ツールキットです。 Golang には Gtk の使用をサポートする多くのサードパーティ パッケージが提供されているため、Golang を使用して Gtk アプリケーションを作成するのは非常に便利です。この記事では、Golang と Gtk を使用してウィンドウを作成し、ボックス、ボタン、イメージなどの共通コントロールを追加する方法を紹介しました。この記事を通じて、Golang と Gtk を使用した GUI アプリケーションの作成を簡単に始められることを願っています。

以上がGolangでGTKをビルドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。