GTK3:如何从 entry/input 框接收输入值?

GTK3 :How to receive input value from entry/input box?

我是 GTK 的新手,我想知道如何调整输入框的大小以及标签和框之间的间距? 另外,如何从输入框中接收输入值以供进一步使用,如 C 函数 "scanf"。谢谢你,对不起我的英语不好

#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>

static void destroy(GtkWidget *widget, gpointer data){
gtk_main_quit ();
}


static void initialize_window(GtkWidget* window) {
gtk_window_set_title(GTK_WINDOW(window),"My Window");
gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);
g_signal_connect (window, "destroy", G_CALLBACK (destroy), NULL);
}

int main (int argc, char *argv[]){
GtkWidget *window,*table,*label,*entry, *entry1, *label1, *label3, *label2, *entry2;
gtk_init(&argc, &argv);



window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
initialize_window(window);


table = gtk_table_new(4, 2, TRUE);
gtk_container_add (GTK_CONTAINER (window), table);


label = gtk_label_new ("Circle with standard formula:(x-a)^2 + (y-b)^2 =r*r");
gtk_misc_set_alignment (GTK_MISC (label), 70, 70);

gtk_table_set_homogeneous(GTK_TABLE (table), TRUE);
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 0, 1);

entry = gtk_entry_new ();
gtk_table_attach_defaults (GTK_TABLE (table), entry, 1, 2, 1, 2);

label1 = gtk_label_new ("Input value of a:");
gtk_table_set_homogeneous(GTK_TABLE (table), TRUE);
gtk_table_attach_defaults(GTK_TABLE (table), label1, 0, 1, 1, 2);

entry1 = gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table), entry1, 1, 2, 2, 3);

label2=gtk_label_new("Input the value of b:");
gtk_table_set_homogeneous(GTK_TABLE(table), TRUE);
gtk_table_attach_defaults(GTK_TABLE (table), label2, 0, 1, 2, 3);

label3=gtk_label_new("Input the value of r:");
gtk_table_set_homogeneous(GTK_TABLE(table), TRUE);
gtk_table_attach_defaults(GTK_TABLE (table), label3, 0, 1, 3, 4);

entry2 = gtk_entry_new();
gtk_table_attach_defaults(GTK_TABLE(table), entry2, 1, 2, 3, 4);


gtk_widget_show_all(window);

gtk_main ();
return 0;
}

为了在您的输入框之一中获取文本,请使用 gtk_entry_get_text 功能,在此处可找到更多详细信息:https://developer.gnome.org/gtk3/stable/GtkEntry.html#gtk-entry-get-text

例如:

buffer = gtk_entry_get_text(&entry1);

就改变元素之间的间距而言,Gtk 文档指出,如果您不需要单独的行间距,那么 GtkGrid 是首选,因为看起来许多 table 函数自 Gtk 3.4 以来已被弃用。

要设置行间距,请使用此处的 gtk_table_set_row_spacing:https://developer.gnome.org/gtk3/stable/GtkTable.html#gtk-table-set-row-spacing 在其下方列出了有关 gtk_table_set_col_spacing.

的信息

在 table 单元格内设置填充有点不同,可以使用子元素的 x-padding 和 y-padding 属性来控制,更多信息列在 GtkTable 页面的底部.