Введение
В данной статье напишем генератор анекдотов на Python в двух вариациях: без GUI (графического интерфейса), и с GUI (графическим интерфейсом).
Установка модулей
Для генерации анекдотов будет использоваться модуль pyjokes, установим его:
pip install pyjokes
В модуле pyjokes анекдоты генерируются на английском языке, поэтому для их перевода используем модуль googletrans:
pip install googletrans==3.1.0a0
Генератор анекдотов без 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)
Итог:

Код:
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 без графического интерфейса, и с ним! Надеюсь Вам понравилась статья, удачи!
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()
Зациклить окно надо. Иначе не корректно работает. Код исправил. Теперь работает как надо. Пользуйтесь, если нужно.