Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
bedermau5
25 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 15
1

На чем писать GUI?

01.06.2018, 21:29. Просмотров 1106. Ответов 6
Метки нет (Все метки)

Сабж, вопрос, мне нужно написать элементарное гуи с пару лейблами кнопкой и т.д.
Написал исполняемый код на си. Стоит ли писать гуи на си, если да, то в какой среде(желательно, что-то быстрое и простое, а не по типу QT Designer) и сложно ли если что подключать библеотеки си в питон, к примеру?. Из знаний создания гуи есть только tkinter с питона.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2018, 21:29
Ответы с готовыми решениями:

На чем лучше писать программы на Си
Сейчас я пишу программы на Visual Studio 2012 и понимаю что это смахивает на извращение,потому что...

Где писать код под Си и чем компилировать?
Здравствуйте! Начал изучать Си. Где писать код?(Читал, что можно даже в блокноте) И чем...

Где и в на чем легче писать распределенные приложения ?
Где и в на чем легче писать распределенные приложения ?

На чем писать GUI?
Всем привет! Ребят, помогите пожалуйста в выборе IDE для написания гуя с базой данных. Не могу...

На чём писать GUI
Нужен какая-нибудь не громоздкая, чтобы программа с пустым окном была до 1 мб со статической...

6
easybudda
Модератор
Эксперт CЭксперт С++
10245 / 6136 / 1543
Регистрация: 25.07.2009
Сообщений: 11,677
01.06.2018, 23:25 2
Цитата Сообщение от bedermau5 Посмотреть сообщение
Из знаний создания гуи есть только tkinter с питона.
Для очень незатейливого интерфейса и этого хватит. В четвёртом издании Лутца "Программирование на Python" второй том, 20 глава - Интеграция Python/C. Прочитайте, разберитесь и будет Вам счастье!
Цитата Сообщение от bedermau5 Посмотреть сообщение
Стоит ли писать гуи на си
Если уже потратили пару месяцев на освоение GTK+, или год-полтора на WinAPI, во всех остальных случаях - нет.
0
bedermau5
25 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 15
01.06.2018, 23:55  [ТС] 3
Если уже потратили пару месяцев на освоение GTK+, или год-полтора на WinAPI, во всех остальных случаях - нет.
на сколько сложно будет в WinAPI реализовать данный элементарный код решения квадратного уравнения?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h> 
#include <math.h> 
#include <locale.h> 
int main () { 
    double a, b, c, d, x1 = 0, x2 = 0; 
    setlocale(LC_CTYPE, "Russian_Russia.1251"); 
    printf("Введите a: "); scanf("%Lf", &a); 
    printf ("Введите b: "); scanf("%Lf", &b); 
    printf("Введите c: "); scanf("%Lf", &c); 
    if (a == 0){
      x1=-c/b;
      printf(" Уравнение имеет один корень: x= %.1Lf", x1);
    }
    else { 
        d = pow(b, 2) - 4 * a * c; 
        if (d < 0) printf("\a\n Уравнение не имеет вещественных корней! "); 
        else if (d == 0) { 
            x1 = -b / (2 / a); 
            if (b == 0 && c == 0) x1 = 0; 
            printf(" Уравнение имеет один корень: x = %.1Lf", x1); 
        } else { 
            x1 = (-b - sqrt(d)) / (2 * a); 
            x2 = (-b + sqrt(d)) / (2 * a); 
            printf (" Уравнение имеет два корня: \n x1 = %.1Lf\n x2 = %.1Lf" , x1, x2); 
        } 
    } 
    getchar(); 
    return 0; 
}
0
easybudda
Модератор
Эксперт CЭксперт С++
10245 / 6136 / 1543
Регистрация: 25.07.2009
Сообщений: 11,677
02.06.2018, 00:58 4
Цитата Сообщение от bedermau5 Посмотреть сообщение
на сколько сложно будет
Вам в каких единицах? Сложность восприятия - понятие сугубо индивидуальное. Кому как.
0
easybudda
Модератор
Эксперт CЭксперт С++
10245 / 6136 / 1543
Регистрация: 25.07.2009
Сообщений: 11,677
02.06.2018, 16:20 5
Лучший ответ Сообщение было отмечено bedermau5 как решение

Решение

Цитата Сообщение от bedermau5 Посмотреть сообщение
элементарный код решения квадратного уравнения
Если кому интересно, вот на GTK+ 2.0 такой:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>
 
#define PARAMS_COUNT (3)
#define EPSILON (1.0e-9)
 
gboolean parse_double(const char * str, double * valptr) {
    char * tail;
    int errcode;
    
    errno = 0;
    *valptr = strtod(str, &tail);
    errcode = errno;
    
    return ( ! ( errcode || *tail ) );
}
 
gboolean equals_zero(double value) {
    return ( fabs(value) < EPSILON );
}
 
int calc_qe(double a, double b, double c, double * pX1, double * pX2) {
    double d;
    
    if ( equals_zero(a) )
        return -1;
    
    d = b * b - 4.0 * a * c;
    if ( d < 0.0 )
        return 0;
    else if ( equals_zero(d) ) {
        *pX1 = *pX2 = -1.0 * b / 2.0 / a;
        return 1;
    }
    d = sqrt(d);
    *pX1 = ( -1.0 * b - d ) / 2.0 / a;
    *pX2 = ( -1.0 * b + d ) / 2.0 / a;
    
    return 2;
}
 
////////////////////////////////////////////////////////////////
 
typedef struct CONTROLS {
    GtkWidget * mainWindow;
    GtkWidget * layoutTable;
    GtkWidget * paramLabels[PARAMS_COUNT];
    GtkWidget * paramEntries[PARAMS_COUNT];
    GtkWidget * processButton;
    GtkWidget * resultLabel;
} Controls_t;
 
void process_calc(GtkWidget * widget, gpointer data) {
    double a, b, c, x1, x2;
    gchar text[256];
    Controls_t * self = (Controls_t*)data;
    
    if ( ! ( parse_double(gtk_entry_get_text(GTK_ENTRY(self->paramEntries[0])), &a) 
        && parse_double(gtk_entry_get_text(GTK_ENTRY(self->paramEntries[1])), &b)
        && parse_double(gtk_entry_get_text(GTK_ENTRY(self->paramEntries[2])), &c) )
    ) {
        gtk_label_set_label(GTK_LABEL(self->resultLabel), "Wrong parameters!");
        return;
    }
    
    switch ( calc_qe(a, b, c, &x1, &x2) ) {
        case -1:
            gtk_label_set_label(GTK_LABEL(self->resultLabel), "Param A can't be zero!");
            break;
        case 0:
            gtk_label_set_label(GTK_LABEL(self->resultLabel), "No roots in real numbers.");
            break;
        case 1:
            sprintf(text, "One root: X = %f", x1);
            gtk_label_set_label(GTK_LABEL(self->resultLabel), text);
            break;
        case 2:
            sprintf(text, "Two roots: X1 = %f; X2 = %f", x1, x2);
            gtk_label_set_label(GTK_LABEL(self->resultLabel), text);
            break;
        default:
            gtk_label_set_label(GTK_LABEL(self->resultLabel), "Some metaphysic case!");
            break;
    }
}
 
/////////////////////////////////////////////////////////////////////////////////
 
int main(int argc, char ** argv) {
    Controls_t self;
    int i;
    char buf[256];
    
    gtk_init(&argc, &argv);
    
    self.mainWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(self.mainWindow), "Quadratic Equation");
    gtk_widget_set_size_request(self.mainWindow, 400, 300);
    gtk_container_set_border_width(GTK_CONTAINER(self.mainWindow), 10);
    g_signal_connect(G_OBJECT(self.mainWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    
    self.layoutTable = gtk_table_new(5, 2, TRUE);
    gtk_container_add(GTK_CONTAINER(self.mainWindow), self.layoutTable);
    
    for ( i = 0; i < PARAMS_COUNT; ++i ) {
        sprintf(buf, "%c = ", 'A' + i);
        self.paramLabels[i] = gtk_label_new(buf);
        self.paramEntries[i] = gtk_entry_new();
        gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.paramLabels[i], 0, 1, i, i + 1);
        gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.paramEntries[i], 1, 2, i, i + 1);
    }
    
    self.processButton = gtk_button_new_with_label("Process...");
    g_signal_connect(G_OBJECT(self.processButton), "clicked", G_CALLBACK(process_calc), (gpointer) &self);
    gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.processButton, 0, 2, 3, 4);
    
    self.resultLabel = gtk_label_new("Quadratic Equations Calculator v.0.1");
    gtk_label_set_line_wrap(GTK_LABEL(self.resultLabel), TRUE);
    gtk_table_attach_defaults(GTK_TABLE(self.layoutTable), self.resultLabel, 0, 2, 4, 5);
    
    gtk_widget_show_all(self.mainWindow);
    
    gtk_main();
    
    return 0;
}
Код
[andrew@easybook gtk]$ gcc -Wall QuadraticEquation.c `pkg-config --cflags --libs gtk+-2.0` -lm
[andrew@easybook gtk]$ ./a.out
На чем писать GUI?
2
bedermau5
25 / 0 / 0
Регистрация: 08.05.2018
Сообщений: 15
02.06.2018, 22:52  [ТС] 6
при попытке компиляции выдает вот это:
На чем писать GUI?

В интернете не нашел решение проблемы..*
0
8Observer8
2609 / 1626 / 285
Регистрация: 05.10.2013
Сообщений: 5,042
Записей в блоге: 86
06.06.2018, 16:38 7
Цитата Сообщение от bedermau5 Посмотреть сообщение
Стоит ли писать гуи на си, если да, то в какой среде(желательно, что-то быстрое и простое, а не по типу QT Designer)
Если под Windows на C или C++, то какую среду или библиотеку для GUI вы бы не взяли, то просто не получится. Я использую среду Visual Studio, но это кому как, о вкусах не спорят. Для GUI на C/C++ использовал WinAPI, а потом Qt.

Добавлено через 2 минуты
Попробуйте, действительно, поставить GTK+, вот пошаговая инструкция для Windows: https://www.gtk.org/download/windows.php
0
06.06.2018, 16:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2018, 16:38

На чём писать приложения с GUI?
Здравствуйте! Я учусь на втором курсе так сказать &quot;на программиста&quot; до сих пор учились писать...

Программа-тестировщик человека. На чем или с чем писать легко и быстро?
Здравствуйте! Нужно сделать тестер, но вот создавать ещё один велосипед желания особо нету, хотя...

В чем и на чем можно писать простые скрипты для Windows 7
Добрый день. Хочется писать простые скрипты, чисто для себя, например, такого содержания - чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru