@ahmed_al_asad

Какой GUI использовать для задачи «Расчет стоимости дома»?

Учусь в университете, по данному предмету "Средства визуальной разработки приложений" дали задачу:

ТЗ
spoiler

Создать приложение, которое на основе введения исходных данных позволит произвести оценочную стоимость дачного дома.
Постановка задачи:
Для работы с приложением необходимо создать форму для ввода следующих исходных данных:
длина стены дома;
ширина стены дома;
количество этажей;
материал, из которого строится дом;
материал, используемый для крыши;
сведения о том, будет ли у дома мансарда.
Форма должна содержать:
текстовую информацию пояснительного характера;
текстовые поля для ввода длины, ширины дома и количества этажей;
флажок, используемый для указания, будет ли дом содержать мансарду;
список, позволяющий выбрать кровельный материал;
раскрывающийся список для выбора материала, из которого будут строиться стены;
кнопку Расчет стоимость, при нажатии на которую будут производиться расчеты стоимости дачного дома. Расчет стоимости дома произвести по следующему алгоритму:
Стоимость стен= 4* длина*ширина*цена_материала* количество этажей.
Стоимость крыши = длина*ширина*цена_кровельного_материала
Стоимость дома= Стоимость стен + Стоимость крыши, если нет мансарды;
Стоимость дома= Стоимость стен + Стоимость крыши + 200, если есть мансарда
поле, размещенное в нижней части формы с правой стороны от кнопки Расчет стоимости, предназначено для отображения вычислительной стоимости.
Кнопку Сброс, позволяющую обнулить все числовые данные формы.
Форма для работы с приложением должна выглядеть примерно следующим образом:

Необходимо предусмотреть невозможность ввода в текстовые поля отрицательных значений и символов.
Должна быть предусмотрена проверка того, что пользователем выбраны материалы для крыши и стен.

Методика выполнения задания
Создайте новый проект
Создайте форму.
Измените имя формы
Разместите на форме следующие элементы управления:
Заголовок «Размер домика» создайте с помощью кнопки Label;
Текстовые поля для ввода длины, ширины, кол-ва этажей создайте с помощью элемента TextBox;
Для указания, будет ли домик содержать мансарду, разместите на форме флажок с помощью кнопки CheckBox;
Для выбора кровельного материала используйте список (кнопка ListBox). Чтобы сформировать список материалов, используйте свойство Items (Collection)
Для выбора материала, из которого строятся стены используйте раскрывающийся список (кнопка ComboBox). Для ввода списка воспользуйтесь свойством Items (Collection).
Создайте кнопку для расчета стоимости (кнопка Button1)
Создайте кнопку Сброс для обнуления всех текстовых полей, а также сброса флажка (кнопка Button)
Напишите процедуры обработки события Click для каждой кнопки.
Наличие поставленного флага проверяется свойством CheckBox.Checked (=true или false)
Цена на каждый вид материала задается в процедуре обработки события Click_Button1.
Выбранный вид проверяется по значению свойства ListBox1.SelectedIndex. Причем индексация начинается с нуля.
Все переменные объявляются целыми.
Ниже представлен фрагмент программы расчета домика без расчета расходов на крышу.
Dim l, h, store, cena, stoim, mans As Integer
        mans = 0
        l = TextBox1.Text
        h = TextBox2.Text
        store = TextBox4.Text
        If CheckBox1.Checked = True Then mans = 20
        If ListBox1.SelectedIndex = 0 Then cena = 10
        If ListBox1.SelectedIndex = 1 Then cena = 20
        If ListBox1.SelectedIndex = 2 Then cena = 30
        stoim = 4 * l * h * cena + mans
        TextBox3.Text = stoim

Факт установления флажка соответствует тому, что значение CheckBox1.Checked равно True.
Для того чтобы осуществить проверку на ввод только числовых значений, целесообразно разместить поле надписи (объект Label3) Ниже показан код программы на событие – изменение значения в textbox1 (проверка):
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If IsNumeric(TextBox1.Text) = False Then
Label3.Text = "repeat input"
End If
End Sub
Для того чтобы проконтролировать, что пользователем выбран вид материала (выбрана строка в ListBox1), необходимо проверить условие: ListBox1.index<0. Если оно истинно, то сообщить, в некотором поле надписи, что мактериал не выбран.
Для проверки на положительность вводимых данных в тестовое поле, можно воспользоваться свойством текстового поля Keychar:

Преподаватели, преподают нам Visual Basic T_T. Но т.к нет смысла его учить. Я попытаюсь его сделать на python3. Вот задался вопрос какой GUI подойдет для такой задачи?

PS Если не трудно, пожалуйста оцените ТЗ учителей, 4 часа просидел и 3 раза по разному пытался выполнить эту задачу.
  • Вопрос задан
  • 328 просмотров
Пригласить эксперта
Ответы на вопрос 5
riot26
@riot26
<:З )~~
Я попытаюсь его сделать на python3. Вот задался вопрос какой GUI подойдет для такой задачи?

Tk
Ответ написан
Комментировать
PyQT
Ответ написан
Комментировать
lxsmkv
@lxsmkv
Test automation engineer
это хоть и не ответ на вопрос, но я бы сделал все на html и js.
Тут и востребованная технология, и работать будет гарантированно на любом компьютере с браузером. Доступно из любой точки земного шара. Тот же jsfiddle или jsbin. Потом можно еще и тесты на selenium прикрутить. Это вообще всех в поросячий восторг приведет :) Ну а главное не будет такого что нужно презентировать а на презентационном компьютере оказывается нужно еще какие библиотеки доустанавливать и все впечатление насмарку. И кстати заморачиваться с GUI инструментом для питона придется не меньше чем выучить html и js с нуля до необходимого для решения задачи уровня. Могу порекомендовать книгу «Самоучитель JavaScript» Марины Дмитриевой. Книга хоть 15 лет назад вышла, но там толково по делу с примерами.

Upd: вот набросал на javascript output.jsbin.com/luxuge, там только валидацию полей прикрутить осталось. Ну и цены в скрипте подобрать. И готово.
Ответ написан
sim3x
@sim3x
Гуи там по сути не нужен - консоли хватит с головой
Tk - самое простое
Ответ написан
Комментировать
@CulHatsker
Маслину поймал
Ну, Tk и PyQT уже назвали, я тогда назову PyGTK

У меня опыт использования этой библиотеки катастрофически мал, могу лишь посоветовать поискать в интернете примеры кода с использованием Glade + PyGTK.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽