Skip to content

Instantly share code, notes, and snippets.

@Konard
Last active April 7, 2024 17:22
Show Gist options
  • Save Konard/6ec4e6085cfb5ad3f414445ce317738c to your computer and use it in GitHub Desktop.
Save Konard/6ec4e6085cfb5ad3f414445ce317738c to your computer and use it in GitHub Desktop.

Вопрос

Как в gtk3 на го сменить задний фон у box

Ответ

GTK (GIMP Toolkit) - это кроссплатформенный инструментарий для создания графических интерфейсов пользователя. Хотя GTK написан на C, для него существуют связки с другими языками программирования, включая Go.

Чтобы изменить фоновый цвет виджета Box в GTK3 на Go, вам понадобиться использовать функцию ModifyBg или OverrideBackgroundColor, которые являются частью библиотеки GTK. Такие функции позволяют изменить цвета стилей виджетов.

Вот пример кода на Go, который изменяет фоновый цвет виджета Box:

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("Unable to create window:", err)
	}
	win.SetTitle("Change Box Background")
	win.Connect("destroy", func() {
		gtk.MainQuit()
	})

	// Создание нового Box виджета.
	box, err := gtk.BoxNew(gtk.ORIENTATION_VERTICAL, 0)
	if err != nil {
		log.Fatal("Unable to create box:", err)
	}

	// Изменение фона Box.
	styleProvider, err := gtk.CssProviderNew()
	if err != nil {
		log.Fatal("Unable to create style provider:", err)
	}

	styleProvider.LoadFromData(`
		box {
			background-color: #00FF00; /* зеленый цвет в формате HEX */
		}
	`)

	screen, err := gdk.ScreenGetDefault()
	if err != nil {
		log.Fatal("Unable to get default screen:", err)
	}

	gtk.StyleContextAddProviderForScreen(screen, styleProvider, gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

	// Добавление Box в окно.
	win.Add(box)

	// Показ всех виджетов.
	win.ShowAll()

	// Запуск основного цикла GTK.
	gtk.Main()
}

Обратите внимание, что в этом примере мы используем CSS для изменения стиля виджета, так как GTK3 поддерживает стилизацию с помощью CSS. Вы можете изменить селектор box на другой, а также использовать псевдоклассы и другие возможности CSS для более тонкой настройки стилей виджетов.

Убедитесь, что установили соответствующую библиотеку GTK для Go перед запуском кода. Это можно сделать с помощью пакетного менеджера go, командой go get:

go get github.com/gotk3/gotk3/gtk

Данный код является общим примером и может потребовать дополнительной адаптации для вашего конкретного случая. Документацию по GTK3 и связке с Go можно найти на сайте проекта gotk3 или в официальных репозиториях на GitHub.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment