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

时间:2015-08-23 08:26:05

标签: c++ c windows gtk3

我是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;
}

1 个答案:

答案 0 :(得分: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是首选的,因为从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的信息。

在表格单元格中设置填充有点不同,可以使用子元素的x-padding和y-padding属性进行控制,有关此内容的更多信息列在GtkTable页面的底部。