Генератор анекдотов на Python

Статьи

Введение

В данной статье напишем генератор анекдотов на Python в двух вариациях: без GUI (графического интерфейса), и с GUI (графическим интерфейсом).

Установка модулей

Для генерации анекдотов будет использоваться модуль pyjokes, установим его:

pip install pyjokes

В модуле pyjokes анекдоты генерируются на английском языке, поэтому для их перевода используем модуль googletrans:

pip install googletrans==3.1.0a0
Устанавливаем именно версию 3.1.0, так как более новые могут выдавать ошибки.

Генератор анекдотов без GUI

Для начала импортируем модуль pyjokes, и класс Translator из модуля googletrans:

import pyjokes
from googletrans import Translator

Создадим объект класса Translator:

translator = Translator()

Создадим бесконечный цикл:

while True:
    question = input('Вывести анекдот?\n')
    if question.lower() == 'да':
        joke = pyjokes.get_joke()
        joke_result = translator.translate(joke, dest='ru')
        print(joke_result.text)
    else:
        print('Ну ладно :(')
        break

question – переменная, в которую сохраняется ответ пользователя

joke – переменная, в которую сохраняется сгенерированный анекдот

joke_result – переменная, в которую сохраняется переведённый анекдот

Код:

from tkinter import *
import pyjokes
from googletrans import Translator

translator = Translator()

while True:
    question = input('Вывести анекдот?\n')
    if question.lower() == 'да':
        joke = pyjokes.get_joke()
        joke_result = translator.translate(joke, dest='ru')
        print(joke_result.text)
    else:
        print('Ну ладно :(')
        break

Генератор анекдотов с GUI

Для начала импортируем модуль pyjokes, класс Translator из модуля googletrans и tkinter:

from tkinter import *
import pyjokes
from googletrans import Translator

Создадим объект класса Tk:

root = Tk()

Добавим заголовок, фиксированное разрешение окна, и уберём возможность изменять его размеры:

root.title('Генератор анекдотов')
root.geometry('500x300')
root.resizable(0, 0)
translator = Translator()

Создадим кнопку:

Button(root, text='Сгенерировать анекдот', font='Arial 16 bold').pack(pady=10)

Добавим виджет Text (многострочное текстовое поле):

t = Text(root, font='Arial 16 bold',
         pady=10,
         padx=10,
         wrap=WORD
         )
t.pack()

Так же в конце кода не забудем прописать метод mainloop():

root.mainloop()

Теперь создадим функцию, в которой будут генерироваться анекдоты, затем переводиться на русский и выводиться на многострочное текстовое поле:

def generate():
    joke = pyjokes.get_joke()
    joke_result = translator.translate(joke, dest='ru')
    t.delete('1.0', END)
    t.insert('1.0', joke_result.text)

joke – переменная, в которую сохраняется сгенерированный анекдот

joke_result – переменная, в которую сохраняется переведённый анекдот

Осталось только добавить команду ранее созданной кнопке и всё готово:

Button(root, text='Сгенерировать анекдот', font='Arial 16 bold', command=generate).pack(pady=10)

Итог:

Генератор анекдотов на Python

Код:

from tkinter import *
import pyjokes
from googletrans import Translator


def generate():
    joke = pyjokes.get_joke()
    joke_result = translator.translate(joke, dest='ru')
    t.delete('1.0', END)
    t.insert('1.0', joke_result.text)


root = Tk()
root.title('Генератор анекдотов')
root.geometry('500x300')
root.resizable(width=False, height=False)
translator = Translator()

Button(root, text='Сгенерировать анекдот', font='Arial 16 bold', command=generate).pack(pady=10)

t = Text(root, font='Arial 16 bold',
         pady=10,
         padx=10,
         wrap=WORD
         )
t.pack()

root.mainloop()

Заключение

В данной статье мы написали генератор анекдотов на python без графического интерфейса, и с ним! Надеюсь Вам понравилась статья, удачи! 

Admin
Admin
IT Start
Добавить комментарий

  1. Аватар
    Coder Python

    from tkinter import *
    import pyjokes
    from googletrans import Translator

    def generate():
    joke = pyjokes.get_joke()
    joke_result = translator.translate(joke, dest=’ru’)
    t.delete(‘1.0’, END)
    t.insert(‘1.0’, joke_result.text)

    root = Tk()
    root.title(‘Генератор анекдотов’)
    root.geometry(‘500×300′)
    root.resizable(width=False, height=False)
    translator = Translator()

    Button(root, text=’Сгенерировать анекдот’, font=’Arial 16 bold’, command=generate).pack(pady=10)

    t = Text(root, font=’Arial 16 bold’,
    pady=10,
    padx=10,
    wrap=WORD
    )
    t.pack()
    root.mainloop()

    Зациклить окно надо. Иначе не корректно работает. Код исправил. Теперь работает как надо. Пользуйтесь, если нужно.

    Ответить