Rumah pembangunan bahagian belakang Golang Bagaimana untuk membina gtk di golang

Bagaimana untuk membina gtk di golang

Apr 25, 2023 am 10:42 AM

Ikhtisar

Apabila Golang menjadi semakin popular, semakin ramai orang cuba menggunakan Golang untuk membina aplikasi desktop. Gtk ialah kit alat popular untuk mencipta GUI merentas platform. Artikel ini akan memperkenalkan cara menggunakan Golang dan Gtk untuk membina aplikasi GUI dengan cepat dan menunjukkan penggunaan beberapa kawalan Gtk asas.

Langkah 1: Pasang Gtk

Tugas pertama yang perlu diselesaikan ialah memasang Gtk3, ini boleh dilakukan dalam pelbagai cara, tetapi berikut ialah cara memasangnya pada sistem Ubuntu atau Debian:

 $ sudo apt-get update
 $ sudo apt-get install libgtk-3-dev
Salin selepas log masuk

Langkah 2: Pasang pakej berkaitan

Untuk menggunakan Golang untuk menulis aplikasi Gtk, anda perlu memasang pakej berikut:

 $ go get -u github.com/gotk3/gotk3/gtk
 $ go get -u github.com/gotk3/gotk3/glib
 $ go get -u github.com/gotk3/gotk3/cairo
Salin selepas log masuk

Langkah 3: Cipta fungsi Utama

Seterusnya, anda perlu mencipta fungsi utama untuk menentukan tingkap, bingkai dan lain-lain yang perlu dibuat. Berikut ialah contoh fungsi Utama yang ringkas:

 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()
 }
Salin selepas log masuk

Dalam contoh ini, tugas paling penting bagi fungsi Utama ialah mencipta tetingkap peringkat atas baharu menggunakan gtk.WindowNew. Fungsi ini memerlukan parameter gtk.WindowType untuk menentukan jenis tetingkap. Dalam kes ini, kita hanya perlu menentukan gtk.WINDOW_TOPLEVEL sebagai parameter ini, yang akan mencipta tetingkap mudah tanpa bar menu dan bar alat.

Setelah tetingkap dibuat, kita boleh menggunakan win.SetTitle dan win.SetDefaultSize untuk menetapkan tajuk dan saiz tetingkap. Akhir sekali, kami menggunakan win.Show untuk memaparkan tetingkap pada skrin. Juga ambil perhatian bahawa kami memanggil gelung gtk.Main() pada penghujungnya, yang akan memastikan tetingkap terbuka sehingga pengguna menutupnya.

Langkah 4: Buat Kotak

Sekarang, kami telah mencipta tetingkap mudah, tetapi ia adalah kanvas kosong. Kita perlu menambah beberapa kawalan pada tetingkap untuk mengatur paparan dengan lebih baik. Dalam Gtk ini boleh dilakukan dengan mudah dengan menambahkan kawalan pada Kotak.

Gtk menyediakan empat jenis kotak yang berbeza: GtkBox, GtkHBox, GtkVBox dan GtkFrame. GtkBox ialah kotak asas yang boleh digunakan untuk mengatur kawalan secara mendatar atau menegak. GtkHBox dan GtkVBox hanyalah untuk melaksanakan susun atur mendatar dan menegak biasa. GtkFrame ialah kotak khas yang boleh memberikan label dan bayang-bayang.

Berikut ialah contoh menambahkan GtkBox pada tetingkap baharu:

 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()
 }
Salin selepas log masuk

Dalam contoh ini, kami mula-mula mencipta kotak menegak. Menggunakan gtk.BoxNew, kami menentukan gtk.ORIENTATION_VERTICAL dan menetapkan parameter kedua kepada 4 untuk menentukan jarak antara item dalam kotak. Seterusnya, kami mencipta label baharu, menambahnya pada kotak dan akhirnya menetapkan teks label.

Langkah terakhir ialah menunjukkan tetingkap dan kotak. Kami menambah kotak pada tetingkap menggunakan kaedah win.Add dan tunjukkan semua elemen dalam kotak menggunakan kaedah box.ShowAll().

Langkah 5: Tambah butang

Selain label, Gtk juga menyokong pelbagai kawalan, seperti butang, kotak teks dan senarai lungsur turun. Mari tambahkan butang pada tetingkap kami. Berikut ialah contoh menambah butang pada tetingkap:

 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()
 }
Salin selepas log masuk

Dalam contoh ini, kami mula-mula mencipta butang baharu, menggunakan gtk.ButtonNewWithLabel dan tetapkan teks butang itu kepada "Klik saya!" Kami kemudian menyambungkan pengendali acara dan butang akan mengeluarkan mesej kepada konsol setiap kali pengguna mengklik butang.

Akhir sekali, kami menambah butang pada tetingkap, menetapkan parameter kedua kepada palsu untuk menunjukkan tidak meregangkan kawalan dan menggunakan kotak.Kaedah PackStart untuk menambah nilai "piksel" spacer.

Langkah Enam: Tambah Imej

Akhir sekali, kami akan menambah imej pada tetingkap kami, ini boleh dilakukan dengan mudah dengan menggunakan GtkImage. Berikut ialah contoh menambahkan imej pada tetingkap:

 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()
 }
Salin selepas log masuk

Dalam contoh ini, kami mula-mula mencipta butang dan menambahkannya pada kotak. Seterusnya, kami memuatkan fail test.png yang terletak pada sistem fail tempatan dan mencipta contoh GtkImage baharu menggunakan gtk.ImageNewFromFile. Akhir sekali, kami menambah imej pada kotak kami menggunakan kaedah kotak.PackStart.

Kesimpulan

Gtk ialah kit alat GUI yang popular yang boleh digunakan untuk mencipta aplikasi GUI merentas platform. Sangat mudah untuk menulis aplikasi Gtk menggunakan Golang kerana Golang menyediakan banyak pakej pihak ketiga untuk menyokong penggunaan Gtk. Dalam artikel ini, kami memperkenalkan cara menggunakan Golang dan Gtk untuk mencipta tetingkap, menambah kawalan biasa seperti kotak, butang dan imej. Saya berharap melalui artikel ini, anda boleh mula menulis aplikasi GUI dengan mudah menggunakan Golang dan Gtk.

Atas ialah kandungan terperinci Bagaimana untuk membina gtk di golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana anda menggunakan alat PPROF untuk menganalisis prestasi GO? Bagaimana anda menggunakan alat PPROF untuk menganalisis prestasi GO? Mar 21, 2025 pm 06:37 PM

Artikel ini menerangkan cara menggunakan alat PPROF untuk menganalisis prestasi GO, termasuk membolehkan profil, mengumpul data, dan mengenal pasti kesesakan biasa seperti CPU dan isu memori.

Bagaimana anda menulis ujian unit di GO? Bagaimana anda menulis ujian unit di GO? Mar 21, 2025 pm 06:34 PM

Artikel ini membincangkan ujian unit menulis di GO, meliputi amalan terbaik, teknik mengejek, dan alat untuk pengurusan ujian yang cekap.

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Artikel ini menunjukkan penciptaan dan stub di GO untuk ujian unit. Ia menekankan penggunaan antara muka, menyediakan contoh pelaksanaan mengejek, dan membincangkan amalan terbaik seperti menjaga mocks fokus dan menggunakan perpustakaan penegasan. Articl

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Artikel ini meneroka kekangan jenis adat Go untuk generik. Ia memperincikan bagaimana antara muka menentukan keperluan jenis minimum untuk fungsi generik, meningkatkan keselamatan jenis dan kebolehgunaan semula kod. Artikel ini juga membincangkan batasan dan amalan terbaik

Terangkan tujuan Pakej Refleksi Go. Bilakah anda akan menggunakan refleksi? Apakah implikasi prestasi? Terangkan tujuan Pakej Refleksi Go. Bilakah anda akan menggunakan refleksi? Apakah implikasi prestasi? Mar 25, 2025 am 11:17 AM

Artikel ini membincangkan pakej GO's Reflect, yang digunakan untuk manipulasi kod runtime, bermanfaat untuk siri, pengaturcaraan generik, dan banyak lagi. Ia memberi amaran tentang kos prestasi seperti pelaksanaan yang lebih perlahan dan penggunaan memori yang lebih tinggi, menasihati penggunaan yang bijak dan terbaik

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Artikel ini meneroka menggunakan alat pengesanan untuk menganalisis aliran pelaksanaan aplikasi GO. Ia membincangkan teknik instrumentasi manual dan automatik, membandingkan alat seperti Jaeger, Zipkin, dan OpenTelemetry, dan menonjolkan visualisasi data yang berkesan

Bagaimana anda menggunakan ujian yang didorong oleh jadual di GO? Bagaimana anda menggunakan ujian yang didorong oleh jadual di GO? Mar 21, 2025 pm 06:35 PM

Artikel ini membincangkan menggunakan ujian yang didorong oleh jadual di GO, satu kaedah yang menggunakan jadual kes ujian untuk menguji fungsi dengan pelbagai input dan hasil. Ia menyoroti faedah seperti kebolehbacaan yang lebih baik, penurunan duplikasi, skalabiliti, konsistensi, dan a

Apakah kelemahan debian openssl Apakah kelemahan debian openssl Apr 02, 2025 am 07:30 AM

OpenSSL, sebagai perpustakaan sumber terbuka yang digunakan secara meluas dalam komunikasi yang selamat, menyediakan algoritma penyulitan, kunci dan fungsi pengurusan sijil. Walau bagaimanapun, terdapat beberapa kelemahan keselamatan yang diketahui dalam versi sejarahnya, yang sebahagiannya sangat berbahaya. Artikel ini akan memberi tumpuan kepada kelemahan umum dan langkah -langkah tindak balas untuk OpenSSL dalam sistem Debian. Debianopenssl yang dikenal pasti: OpenSSL telah mengalami beberapa kelemahan yang serius, seperti: Kerentanan Pendarahan Jantung (CVE-2014-0160): Kelemahan ini mempengaruhi OpenSSL 1.0.1 hingga 1.0.1f dan 1.0.2 hingga 1.0.2 versi beta. Penyerang boleh menggunakan kelemahan ini untuk maklumat sensitif baca yang tidak dibenarkan di pelayan, termasuk kunci penyulitan, dll.

See all articles