在gtk中,如何使用新按钮和其他小部件切换到新屏幕,但是在同一个窗口中?

问题描述 投票:0回答:1

在gtk中,我试图制作一个游戏,在显示主菜单之前用大字母显示创建者3(3)秒。我知道没有任何错误/功能DisplayMainMenu。出于某种原因,这使得它只是永远显示Asadefa屏幕。我该怎么办?

#define NOTHING
#define EMPTYSTRING "\0"

int main(int argc, char *argv[]) {
    gtk_init (&argc, &argv);
    Window = gtk_window_new(0);
    Box = gtk_hbox_new(00, 00);

    gtk_window_set_position(GTK_WINDOW(Window), 1);
    gtk_window_set_default_size(GTK_WINDOW(Window),800, 500);
    gtk_window_set_title(GTK_WINDOW(Window), "Fakecraft" );
    g_signal_connect(Window, "destroy", gtk_main_quit, NULL);
    gtk_container_set_border_width(GTK_CONTAINER(Window),16);

    char *TXT=("<span font=\"72\">ASADEFA </span>");
    GtkWidget (*Label) = gtk_label_new(EMPTYSTRING);
    gtk_container_add(GTK_CONTAINER(Window), Box);
    gtk_container_add(GTK_CONTAINER(Box), Label);
    gtk_label_set_markup(GTK_LABEL(Label), TXT);

    gtk_widget_show_all(Window);
    gtk_main( NOTHING NOTHING );

    sleep(3);

    DisplayMainMenu();
    return 0;
}
c linux ubuntu gtk gtk2
1个回答
0
投票

不要使用sleep。 GTK +使用事件循环来对事件做出反应,因此在调用sleep之前你不会到达你的gtk_main_quit调用,这已经太晚了。您应该使用g_timout_add_seconds来添加一个事件源,在3秒后调用您的回调。在该回调中,您可以调用DisplayMainMenu函数。

© www.soinside.com 2019 - 2024. All rights reserved.