Изменить размер шрифта и цвет метки кнопки в GTKAda
Кто-нибудь знает, как изменить характеристики метки кнопки в GTKAda.
Я пробовал с пакетом Pango и пакетом Style с пакетом Widget, и они не меняют свойства.
Код выглядит примерно так:
Gtk_New (Button_Select, "Select");
Modify_Font (Button_Select, From_String("Helvetica 16"));
Pack_Start (Control_Box, Button_Select, False, False, 1);
но характеристики метки "Выбрать" не меняются.
Любая идея или намек?
Спасибо за чтение и посещение моего вопроса.
1 ответ
Я нашел решение из кода на PHP и просто передал команды в ada, но я думаю, что полезно оставить вопрос и ответить на него.
Когда кнопка создана, объект метки также создается и добавляется к кнопке. Можно получить эту функцию объекта -Get_Child-- метки, а затем использовать объект метки как обычную метку.
Команда выглядит следующим образом:
Set_Markup(GTk_Label(Get_Child (Button_S)), "<span weight=""bold"" color=""blue"" size=""xx-large"">It Works!!</span>");
Полный код следующий:
with GLib; use GLib;
with Gtk.Window; use Gtk.Window;
with Gtk.Frame; use Gtk.Frame;
with Gtk.Button; use Gtk.Button;
with Gtk.Widget; use Gtk.Widget;
with Gtk.Label; use Gtk.Label;
with Pango.Font; use Pango.Font;
with Gtk.Handlers;
with Gtk.Main;
procedure button_label_test is
Window : Gtk_Window;
Frame : Gtk_Frame;
Button_S : Gtk_Button;
package Handlers is new Gtk.Handlers.Callback (Gtk_Widget_Record);
package Return_Handlers is
new Gtk.Handlers.Return_Callback (Gtk_Widget_Record, Boolean);
function Delete_Event (Widget : access Gtk_Widget_Record'Class)
return Boolean is
begin
return False;
end Delete_Event;
procedure Destroy (Widget : access Gtk_Widget_Record'Class) is
begin
Gtk.Main.Main_Quit;
end Destroy;
-- This is the function to modify the characteristics of the label of the button
procedure Clicked (Widget : access Gtk_Widget_Record'Class) is
begin
Set_Markup(GTk_Label(Get_Child (Button_S)), "<span weight=""bold"" color=""blue"" size=""xx-large"">It Works!!</span>");
end Clicked;
begin
Gtk.Main.Init;
Gtk.Window.Gtk_New (Window);
Set_Default_Size (Window, 200, 200);
Gtk.Window.Set_Title (Window, "Button Label test");
Gtk_New (Frame);
Gtk_New (Button_S, "Try");
Add (Frame, Button_S);
Add (Window, Frame);
Return_Handlers.Connect
( Window,
"delete_event",
Return_Handlers.To_Marshaller (Delete_Event'Access)
);
Handlers.Connect
( Window,
"destroy",
Handlers.To_Marshaller (Destroy'Access)
);
Handlers.Connect
( Button_S,
"clicked",
Handlers.To_Marshaller (Clicked'Access)
);
Show_All (Window);
Show (Window);
Gtk.Main.Main;
end button_label_test;
Я думаю, что это будет полезно для кого-то.