ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.11.2023

Просмотров: 30

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Лабораторный практикум 22 | «Создание проекта с использованием компонентов для работы с текстом»


7.    Провести социологический опрос. Студент указывает фамилию (Edit), она заносится в список. Задается вопрос: «Любите ли Вы читать книги». Ответы: да или нет. Если «да», то появляется запись –«молодец», если «нет», то – «надо, надо читать». Составить программу, чтобы было видно, кто читает, а кто нет. Также подсчитать, сколько  процентов студентов любить читать книги, а сколько – нет.

import tkinter as tk
class SurveyApp:

    def __init__(self, master):

        self.master = master

        master.title("Социологический опрос")
        # создаем компоненты

        self.label_name = tk.Label(master, text="Введите фамилию:")

        self.entry_name = tk.Entry(master)

        self.button_add = tk.Button(master, text="Добавить фамилию", command=self.add_name)
        self.label_question = tk.Label(master, text="Любите ли Вы читать книги?")

        self.button_yes = tk.Button(master, text="Да", command=lambda:self.show_message("молодец"))

        self.button_no = tk.Button(master, text="Нет", command=lambda:self.show_message("надо, надо читать"))
        self.text_area = tk.Text(master)
        self.button_finish = tk.Button(master, text="Завершить опрос", command=self.finish)
        # размещаем компоненты на форме

        self.label_name.grid(column=0, row=0, padx=10, pady=10)

        self.entry_name.grid(column=1, row=0, padx=10, pady=10)

        self.button_add.grid(column=2, row=0, padx=10, pady=10)
        self.label_question.grid(column=0, row=1, padx=10, pady=10)

        self.button_yes.grid(column=1, row=1, padx=10, pady=10)

        self.button_no.grid(column=2, row=1, padx=10, pady=10)
        self.text_area.grid(column=0, row=2, columnspan=3, padx=10, pady=10)
        self.button_finish.grid(column=1, row=3, padx=10, pady=10)
        # создаем переменные для подсчета результатов опроса

        self.total_students = 0

        self.likes_reading = 0

        self.dislikes_reading = 0
    def add_name(self):

        # добавляем фамилию студента в список

        name = self.entry_name.get()

        if name:

            self.text_area.insert(tk.END, f"{name}: ")

            self.total_students += 1

        self.entry_name.delete(0, tk.END)
    def show_message(self, message):

        # выводим сообщение в таблицу

        self.text_area.insert(tk.END, f"{message}\n")


        if message == "молодец":

            self.likes_reading += 1

        else:

            self.dislikes_reading += 1
    def finish(self):

        # подсчитываем результаты опроса и выводим информацию на экран

        likes_percent = round(self.likes_reading / self.total_students * 100)

        dislikes_percent = round(self.dislikes_reading / self.total_students * 100)

        self.text_area.insert(tk.END, f"\nВсего опрошено студентов: {self.total_students}\n")

        self.text_area.insert(tk.END, f"Любят читать книги: {likes_percent}% ({self.likes_reading} студентов)\n")

        self.text_area.insert(tk.END, f"Не любят читать книги: {dislikes_percent}% ({self.dislikes_reading} студентов)\n")

        self.button_add.config(state=tk.DISABLED)

        self.button_yes.config(state=tk.DISABLED)

        self.button_no.config(state=tk.DISABLED)
root = tk.Tk()

app = SurveyApp(root)

root.mainloop()