1

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);

ただし、ラベル「選択」の特性は変わりません。

アイデアやヒントはありますか?

私の質問を読んで参加してくれてありがとう。

4

1 に答える 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;

誰かの役に立つと思います。

于 2012-09-20T13:19:56.560 に答える