大家好,
我正在尝试将我的PyGTK应用程序转换为C,一切都是 按预期工作,直到我遇到检索笔记本小部件的标签名称的问题。
以下是我正在努力实现的一个简短例子。
GtkBuilder *builder = NULL;
GtkWidget *window = NULL;
GtkWidget *notebook = NULL;
GError *error = NULL;
void on_page_switch(GtkNotebook *notebook, gpointer data)
{
// gtk_notebook_get_tab_label_text(GtkNotebook *notebook,GtkWidget *child)
}
int main (int argc, char *argv[])
{
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
if( ! gtk_builder_add_from_file( builder, "data/glade.glade", &error ) )
{
g_warning( "%s", error->message );
g_free( error );
return( 1 );
}
window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
gtk_window_set_resizable (GTK_WINDOW(window), FALSE);
g_signal_connect(window, "destroy", GTK_SIGNAL_FUNC (on_window_destroy), NULL);
notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook1"));
g_signal_connect(GTK_NOTEBOOK (notebook), "switch-page", GTK_SIGNAL_FUNC(on_page_switch), NULL);
gtk_builder_connect_signals (builder, NULL);
g_object_unref (G_OBJECT (builder));
gtk_widget_show_all(window);
gtk_main ();
return 0;
}
您能否就如何获取当前标签的标签名称给我一些指示?
我认为应该是这个函数gtk_notebook_get_tab_label_text(GtkNotebook *notebook, GtkWidget *child)
,但是我无法让它工作。
为我糟糕的英语道歉。
提前致谢, 亚历
///编辑////
实际上回调函数是错误的...... 我错过了几个通过“switch-page”事件传递的指针。
void on_page_switch(GtkNotebook * notebook, GtkWidget *page, guint page_num, gpointer user_data)
{
GtkWidget * child = gtk_notebook_get_nth_page(notebook, page_num);
printf(" -> %i \n", gtk_notebook_page_num(notebook, child));
}
答案 0 :(得分:1)
正确,您应该可以使用gtk_notebook_get_tab_label_text()
来执行此操作。
您需要一个指向您感兴趣的标签的子窗口小部件(页面内容)的指针,如果您没有方便的笔记本电脑,可以使用gtk_notebook_get_nth_page()
来获取它。
由于您没有指定在尝试时遇到的问题,因此很难提供更多帮助。