请帮我创建一系列按钮。这就是我到目前为止所做的事情,但我相信我做错了,因为我的程序没有按预期运行。
/*array is here*/
GtkWidget *button[2];
int i;
for (i=0; i<2; i++)
{
button[i]=gtk_button_new();
}
button[0] = gtk_button_new_with_label ("Run shellscript");
g_signal_connect (button[0], "clicked",
G_CALLBACK (callback), "shellscript");
gtk_box_pack_start (GTK_BOX (box1), button[0], TRUE, TRUE, 0);
gtk_widget_show(button[0]);
button[1] = gtk_button_new_with_label ("Run program2 ");
g_signal_connect (button[1], "clicked",
G_CALLBACK (callback), "program2");
gtk_box_pack_start (GTK_BOX (box1), button[1], TRUE, TRUE, 0);
gtk_widget_show(button[1]);
答案 0 :(得分:0)
有几个问题:
你的循环没用,因为你之后用手创建按钮,并造成内存泄漏。删除整个块。
从您的其他代码示例中,我发现您没有在您的顶层窗口上调用gtk_widget_show_all
。它的工作方式类似于gtk_widget_show
,除了它是递归的,并且会显示小部件及其所有小部件。
我可以让您的代码示例运行这两个修改。但是,Xrandr错误完全不相关,并且与您的环境有关。检查您是否可以毫无问题地运行另一个GTK应用程序(如gtk-demo
,与GTK一起安装)。