코드를 작성하려고했습니다. C, 리눅스. 사용자가 문자열과 날짜를 입력하십시오. 오늘이라면 프로그램은 그의 문자열이있는 창을 보여줘야합니다. 이 창은 사용자가 아닌 코드로 닫아야합니다. 그런 다음 짧은 시간 후에 다시 팝업됩니다. gtk_widget_destroy 및 gtk_widget_hide가 작동하지 않습니다.Linux, C, Gtk. 잠시 후 창 닫기
`(aa:26429): Gtk-CRITICAL **: IA__gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed`
#include <gtk/gtk.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
/* numbered markers placed below by msw for reference */
char str[50];
int main(int argc, char *argv[])
{
printf("Enter your string\n>:");
fgets(str, 50, stdin);
char time_buf[10], date[10];
int a=strlen(time_buf);
int i=0;
time_t endwait;
time_t start = time(NULL);
time_t seconds = 30;
endwait=start+seconds;
printf("Enter date\n>:");
fgets(date, 10, stdin);
time_t now;
time(&now);
strftime(time_buf, 21, "%Y-%m-%d", gmtime(&now));
if (strncmp(time_buf,date,9) == 0) {
printf("TODAY!\n");
while (start < endwait) {
GtkWidget *label;
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"ALARM");
label = gtk_label_new(str);
gtk_container_set_border_width(GTK_CONTAINER(window), 50);
gtk_container_add(GTK_CONTAINER(window), label);
gtk_widget_show_all(window);
g_signal_connect(G_OBJECT(window),"destroy",
G_CALLBACK(gtk_main_quit),NULL)
gtk_main(); // mark 1 ###
gtk_widget_destroy (label); // mark 2 ###
//gtk_widget_hide(window);
start = time(NULL);
sleep(10);
}
} else {
printf("NOT TODAY");
return 0;
}
}
더 나은 형식으로 질문을 편집하십시오. 코드 및 오류 메시지는 4 개의 공백으로 시작해야합니다. –