PyQt5 - Проект "Балачка"

Якщо спробувати поглянути на мовні речення з точки зору програмування, то можна зауважити деяку закономірність:

  • Учень весело кричить
  • Продавець швидко працює
  • Він повільно пише
  • Вона красиво говорить
  • Мама красиво малює

Структура кожного з цих речень однакова: підмет-обставина-присудок. 

Якщо створити набір (список) можливих підметів, обставин, присудків (і можливо інших частин речення), то можна створити генератор випадкових речень.

Завдання проекту: Розробити форму, в якій у текстові написи будуть генеруватись випадкові фрази після клацання відповідних кнопок pushButton.

У конструкторі Designer потрібно створити компоненти: написи Label та кнопка PushButton:


Скористаємось початковою заготовкою:

from PyQt5 import QtWidgets, uic
import sys
from PyQt5.QtGui import *

class Ui(QtWidgets.QMainWindow):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('talk.ui', self)
        self.show()
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()


До цієї програми потрібно додати опис компонентів форми

        self.pushButton = self.findChild(QtWidgets.QPushButton, 'pushButton')
        self.pushButton.clicked.connect(self.button1)
        self.label = self.findChild(QtWidgets.QLabel, 'label')
        self.label_2 = self.findChild(QtWidgets.QLabel, 'label_2')
        self.label_3 = self.findChild(QtWidgets.QLabel, 'label_3')

Решту компонентів форми опишіть самостійно.


На початку проекту визначаємо списки можливих підметів, присудків, обставин тощо. Загалом, ці списки можуть зберігатись у зовнішніх файлах і зчитуватись так, як описано в темі https://dystosvita.gnomio.com/mod/page/view.php?id=2368

import random
pidmet=["Учень","Продавець","Він","Вона","Мама"]
prysodok=["ричить","працює","пише","говорить","малює"]
obstavyna=["весело","швидко","повільно","красиво"]


Метод обробки для клацання кнопки полягає у тому, що беремо випадкове значення зі списку підметів, присудків, обставин, і записуємо це значення у відповідні написи:

    def button1(self):
        a=random.choice(pidmet)
        self.label.setText(a)

Команди вибору випадкових обставин та присудків напишіть самостійно.


Можна створити й інші універсальні конструктори фраз, наприклад:

За схожим принципом, можна сказати, працюють чат-боти. Вони видають певні випадкові фрази, іноді залежні від контексту розмови. Звичайно, новіші технології застосовують методи штучного інтелекту, проте у своїй основі вони враховують принципи побудови речень певної мови (української, англійської тощо).

Остання зміна: вівторок 5 травня 2020 6:16