Изменение цвета кнопки в gtk с помощью языка c с помощью gcc

Я использую: "gtk+-bundle_2.24.10-20120208_win32" в MinGW, используя gcc в Windows 7...

Мне трудно установить цвет на кнопке. Мой код

GdkColor color;
gdk_color_parse ("red", &color);
gtk_widget_modify_bg ( GTK_WIDGET(a3), GTK_STATE_NORMAL, &color);
gtk_widget_show_all(window);

Но я не могу получить кнопку с красным цветом... Что делать..


person 681ankit    schedule 09.11.2012    source источник
comment
Вы добавляете свой вигет, прежде чем показать все? например. gtk_container_add(GTK_CONTAINER(window), button); Подходит ли вам этот пример: stackoverflow.com/questions/99488/?   -  person pce    schedule 09.11.2012
comment
Я пробовал это, но тоже не работает   -  person 681ankit    schedule 09.11.2012


Ответы (3)


Это работает с GTK 2 в Linux:

#include <gtk/gtk.h>

int main (int argc,char **argv)
{
    GtkWidget *button;
    GtkWidget *window;

    gtk_init (&argc,&argv);
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    g_signal_connect (G_OBJECT(window), "destroy",
            G_CALLBACK (gtk_main_quit), NULL);

    button = gtk_button_new_with_label ("Hello World !");
    gtk_container_add (GTK_CONTAINER (window), button);

    GdkColor color;
    gdk_color_parse ("red", &color);
    gtk_widget_modify_bg (GTK_WIDGET(button), GTK_STATE_NORMAL, &color);

    gtk_widget_show_all (window);
    gtk_main ();

    return 0;
}

Скомпилируйте его и проверьте, работает ли он на вашей платформе.

person liberforce    schedule 09.11.2012
comment
.. Я пробовал, но цвет кнопки все еще не установлен. Я думаю, что это не будет работать в Windows. - person 681ankit; 10.11.2012
comment
Убедитесь, что он не переопределяется в файле gtkrc, если файл rc устанавливает bg_color виджета кнопки, он переопределит их вручную, установив их в коде. - person technosaurus; 20.11.2012

Я использовал окно событий в gtk2.24.10, оно работает.

Я нашел это в сети.

"modify_bg() влияет только на виджеты, с которыми связан gtk.gdk.Window.

К виджетам, не имеющим ассоциированного окна, относятся:

gtk.Arrow,gtk.Bin, gtk.Box, gtk.Button, gtk.CheckButton, gtk.Fixed, gtk.Image, gtk.Label, gtk.MenuItem, gtk.Notebook, gtk.Paned, gtk.RadioButton , gtk.Range, gtk.ScrolledWindow, gtk.Separator, gtk.Table, gtk.Toolbar, gtk.AspectFrame, gtk.Frame, gtk.VBox, gtk.HBox, gtk.VSeparator, gtk.HSeparator.

Эти виджеты можно добавить в gtk.EventBox, чтобы обойти это ограничение».

person user3056951    schedule 14.07.2015

Установка ГТК

Чтобы установить библиотеки Gtk, мы можем перейти по следующей ссылке. Прокрутите вниз до середины страницы, и вы найдете пакеты «Все в одном». При загрузке устанавливаются библиотека времени выполнения и версии для разработчиков.

http://www.gtk.org/download/win32.php

Запустите установщик и установите его в расположение по умолчанию, C:\Program Files (x86)\GTK2-Runtime\, и продолжите добавление переменной среды Path с двоичными и библиотечными файлами: C:\Program Files (x86)\GTK2-Runtime\bin; C:\gtk\bin; C:\gtk\lib; C:\gtk\include;

Исправление кнопки

Рекомендуется переименовать каталог share в каталоге GTK2-Runtime. Каталог по умолчанию — C:\Program Files (x86)\GTK2-Runtime\. Я переименовал каталог share в _share, и теперь весь цветовой код для виджетов отлично работает!

Есть gtkrc файлов, в которых хранятся свойства GUI всех виджетов Gtk. Если этот каталог не переименовывается, не перемещается и не удаляется, все стили графического интерфейса ATST будут отображаться по умолчанию, установленными средой выполнения, или серыми.

person mikeppalmer    schedule 04.01.2013