嗨,大家好,我從gtk開始,我需要在第一次點擊後禁用按鈕。GTK的解散按鈕
我有兩個按鈕,第一個按鈕使用USB開始數據輸入,第二個按鈕會終止進程。第一次點擊後,必須禁用數據感染按鈕。我正在使用一個名爲gtk_widget_set_sensitive(widget,FALSE | TRUE)的選項。在此之後,按鈕始終禁用,但我無法理解爲什麼?
這裏是我的代碼:
#include <gtk/gtk.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
#include <stdio.h>
pid_t pid, pid2;
double a;
static void button_clicked2 (GtkWidget *widget, gpointer data)
{
pid2=pid+1;
kill(pid, SIGTERM);
kill(pid2, SIGTERM);
}
int button_clicked(GtkWidget *widget, gpointer data)
{
g_print("clicked\n");
pid = fork();
//Here we begin te data transmission from our usb port... (the port must be initialized before we run the code)
if (pid == 0)
{
execlp("/bin/sh", "/bin/sh", "-c", " cat /dev/cu.usbmodem1421 -9600 > data1.txt", (char *)NULL);
printf("hello");
}
return pid;
}
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *button;
GtkWidget *box1;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
box1 = gtk_hbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), box1);
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
button = gtk_button_new_with_label("button 1");
a=g_signal_connect (button, "clicked", G_CALLBACK (button_clicked), (gpointer) "button");
if(a==9)
{
gtk_widget_set_sensitive(widget, FALSE)
}
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
gtk_widget_show (button);
button = gtk_button_new_with_label("button 2");
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
g_signal_connect (button, "clicked", G_CALLBACK (button_clicked2), (gpointer) "button 2");
gtk_box_pack_start(GTK_BOX (box1), button, TRUE, TRUE, 0);
gtk_widget_show(button);
gtk_widget_show(box1);
gtk_widget_show(window);
gtk_main();
return 0;
}
我相信前點擊按鈕停止或者也許我不明白是怎麼函數調用工作。