更新 GTK 窗口并在循环的每次迭代中添加新图像

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

我正在尝试使用 gtk 将图像添加到窗口,我在一个矩阵上运行了一个 while 循环,每个矩阵都有一定的值,我想在每次匹配时将一个新图像添加到屏幕上的位置。

这是我第一次使用 gtk,所以我将不胜感激任何帮助和建议。

void ShowMatrix(int solution[SIZE_ROW][SIZE_COL]) {
    GtkWidget *window;
    GtkWidget *grid;
    GtkWidget *image;
    GdkPixbuf *pixbuf;
    int print_mat[SIZE_ROW][SIZE_COL];
    int i, j;
    int counter = 1;
    

    gtk_init(NULL, NULL);
    

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "Pooing Dog");
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 400);
    gtk_container_set_border_width(GTK_CONTAINER(window), 10);
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
    

    grid = gtk_grid_new();
    gtk_container_add(GTK_CONTAINER(window), grid);
 

    while (counter <= 64)
    {
        for (i = 0; i < SIZE_ROW; i++) 
        {
            for (j = 0; j < SIZE_COL; j++) 
            {
                if (solution[i][j] == counter) 
                {
                    pixbuf = gdk_pixbuf_new_from_file("Negev_t.png", NULL);
                    image = gtk_image_new_from_pixbuf(pixbuf);
                    gtk_grid_attach(GTK_GRID(grid), image, j, i, 1, 1);
                    gtk_widget_show(image);
                    gtk_widget_queue_draw(window);
                    gtk_main_iteration_do(FALSE);
                    sleep(1);

                }
            }
        }
        counter++;
    }

    gtk_main();
}
c user-interface gtk3
© www.soinside.com 2019 - 2024. All rights reserved.