انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: چگونه اسکریپت ها شل را در gtk اجرا کنیم؟ (how run scripts shell in gtk)  (دفعات بازدید: 11923 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین مهدی2

  • Jr. Member
  • *
  • ارسال: 44
سلام
کسی نبود به من کمک کنه
سوالم این هست که می خوام وقتی توی کنسول تایپ شد(finish) سیگنالی ایجاد شود( که بتوانم برای کالبک آن دستور بسته شدن پنجره بنویسم)
FILE *fp;
        gint exit_status;
        gchar *command = "gksu -- /home/m/Desktop/cd-tavasol/sh/tavasol8.04LTS.sh";

        fp = popen(command, "r");
    if (fp == NULL)
    {
                g_print("Error running %s", command);
    }
        exit_status = pclose (fp);
        g_print("finish", exit_status);
شکر خداوند مهربان تونستم کد مورد نیازم رو بنویسم
         read ("fin");
if ( "fin" )
{
    g_print("ok");
}
در داخل کد به جای fin عبارتی که در کنسول تایپ می شود را بنویسید
وبه جای g_print("ok"); عملیلاتی که می خواهید انجام شود را تایپ کنید

آفلاین مهدی2

  • Jr. Member
  • *
  • ارسال: 44
سلام
من برنامه نصب گرافیکی نرم افزار را بصورت زیر نوشتم و آن را با gcc کامپایل کردم
اما مشکل این است که وقتی button کلیک می شود و برنامه هم نصب می شود ولی در بعضی موارد اگر بعد از انجام نصب دستور
sudo dpkg --configure -a
در ترمینال اجرا شود بعضی از برنامه seting up می شود (بخصوص در مواردی که برنامه libc6 نصب شود )



#include <gtk/gtk.h>
gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
gtk_main_quit();
return FALSE;
}

void kkk(GtkWidget *widget,gpointer data)
{
FILE *fp;
        gint exit_status;
        gchar *command = "gksu -- ";

        /* execute command */
        fp = popen(command, "r");
    if (fp == NULL)
    {
                g_print("Error running %s", command);
    }
        exit_status = pclose (fp);
        g_print("Script exited with status %d", exit_status);
}

int main(int argc , char *argv[])
{
gtk_init(&argc,&argv);
/*bفهرست اشیا*/
GtkWidget *window;
GtkWidget *button1;
/*bسفارشی کردن اشیا*/
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
button1= gtk_button_new_with_label ("tavasol");
gtk_container_add(GTK_CONTAINER(window),button1);
gtk_window_set_title(GTK_WINDOW(window),"WELCOME TO GTK+");
gtk_widget_set_size_request(GTK_WIDGET(window),450,250);
gtk_window_set_resizable(GTK_WINDOW(window),FALSE);

/*bسیگنال بسته شدن*/
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(delete_event),NULL);
/*bسیگنال کلیک*/
g_signal_connect(G_OBJECT(button1),"clicked",G_CALLBACK(kkk),NULL);
/*bنمایش اشیا*/
gtk_widget_show(window);
gtk_widget_show(button1);

gtk_main();
return 0;
}

آفلاین مهدی2

  • Jr. Member
  • *
  • ارسال: 44
سلام به خودم
#include <gtk/gtk.h>
#include <stdlib.h>

gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
{
gtk_main_quit();
return FALSE;
}

void kkk(GtkWidget *widget,gpointer data)
{
   int x=system("cd ~/Desktop;gksu -- sudo dpkg -i /home/m/Desktop/cdd/packages/amir05_beta_i386.deb"); //**
   return 0;
}

int main(int argc , char *argv[])
{
gtk_init(&argc,&argv);
/*bفهرست اشیا*/
GtkWidget *window;
GtkWidget *button1;
/*bسفارشی کردن اشیا*/
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
button1= gtk_button_new_with_label ("tavasol");
gtk_container_add(GTK_CONTAINER(window),button1);
gtk_window_set_title(GTK_WINDOW(window),"WELCOME TO GTK+");
gtk_widget_set_size_request(GTK_WIDGET(window),450,250);
gtk_window_set_resizable(GTK_WINDOW(window),FALSE);

/*bسیگنال بسته شدن*/
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(delete_event),NULL);
/*bسیگنال کلیک*/
g_signal_connect(G_OBJECT(button1),"clicked",G_CALLBACK(kkk),NULL);
/*bنمایش اشیا*/
gtk_widget_show(window);
gtk_widget_show(button1);

gtk_main();
return 0;
}