ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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()