c - GTK+ 程序中带有标签的文本框

标签 c gtk gnome

我是 GTK+ 编程的新手。我写了一个简单的 GTK+ 程序,我在窗口中显示一个标签和一个文本框,标签应该在文本框的左边,我应该能够指定水平长度文本框。到目前为止,下面是我的代码,程序运行良好,但我无法将标签对齐到文本框的左侧,也无法设置文本框的水平长度。

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

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

int main (int argc, char *argv[])
{
  GtkWidget *window,*table,*label,*entry;
  gtk_init(&argc, &argv);
  void initialize_window(GtkWidget *);

  //Create the main window
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  initialize_window(window);
  gtk_widget_show(window);

   /* Create a 1x2 table */
   table = gtk_table_new (1, 2, TRUE);
   gtk_container_add (GTK_CONTAINER (window), table);
   gtk_widget_show (table);


  /* create a new label. */
  label = gtk_label_new ("Enter some text: ");
  gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
  gtk_table_attach_defaults (GTK_TABLE (table),label, 0, 1, 0, 1);
  gtk_widget_show (label);

  //create a text box
  entry = gtk_entry_new ();
  gtk_entry_set_max_length (GTK_ENTRY (entry),0);
  gtk_table_attach_defaults (GTK_TABLE (table),entry, 0, 1, 0, 1);
  gtk_widget_show (entry); 



  gtk_main ();
  return 0;
}



void initialize_window(GtkWidget *window)
{
  gtk_window_set_title(GTK_WINDOW(window),"My Window"); //Set window title
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 200); //Set default size for the window
  g_signal_connect (window, "destroy",G_CALLBACK (destroy), NULL); //End application when close button clicked

}

我该如何解决这个问题?

请帮忙 谢谢。

最佳答案

你弄乱了表格位置,如果你不知道它的作用就不要设置 aligin,这可能有点误导。 这是工作代码(我想这就是你想要的):

#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"); //Set window title
  gtk_window_set_default_size (GTK_WINDOW (window), 400, 200); //Set default size for the window
  g_signal_connect (window, "destroy", G_CALLBACK (destroy), NULL); //End application when close button clicked

}

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


  //Create the main window
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  initialize_window(window);


   /* Create a 1x2 table */
   table = gtk_table_new (1, 2, TRUE);
   gtk_container_add (GTK_CONTAINER (window), table);


  /* create a new label. */
  label = gtk_label_new ("Enter some text:" );
  //gtk_misc_set_alignment (GTK_MISC (label), 0, 0);
  gtk_table_set_homogeneous(GTK_TABLE (table), TRUE);
  gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, 0, 1);


  //create a text box
  entry = gtk_entry_new ();
  gtk_entry_set_max_length (GTK_ENTRY (entry),0);
  gtk_table_attach_defaults (GTK_TABLE (table), entry, 0, 1, 0, 1);


    gtk_widget_show_all(window);

  gtk_main ();
  return 0;
}

关于c - GTK+ 程序中带有标签的文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834166/

相关文章:

在 GEdit 中创建自己的语法突出显示?

dependencies - gobject 依赖 glib 还是 glib 依赖 gobject?

c++ - double Gtk::Messadialog 退出前

linux - 如何在 Linux 中不同进程的全屏应用程序顶部弹出 GTK 窗口/小部件?

c - 枚举类型如何用于分配寄存器

c - realloc 但只有前几个字节是有意义的

c - 为什么从 sockaddr_in 到 sockaddr 的转换有效

c - C 中的命名共享内存问题

python - 如何在 PyGI GTK 中使用 GIO Actions 创建一个完整的菜单?

linux - 当一个应用程序在 linux 上发布时,如何使其与大多数窗口管理器兼容?