Python Forum
tkinter - Random Quote from internet - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: General (https://python-forum.io/forum-1.html)
+--- Forum: Code sharing (https://python-forum.io/forum-5.html)
+--- Thread: tkinter - Random Quote from internet (/thread-41887.html)



tkinter - Random Quote from internet - menator01 - Apr-02-2024

Gets random quote from internet

import requests
import json
import tkinter as tk



root = tk.Tk()
root.title('Random quote of the day')

def get_quote():
    frame = tk.Frame(root)
    frame.grid(column=0, row=1, sticky='news', padx=1)

    url = 'https://api.quotable.io/random'
    quote = json.loads(requests.get(url).text)
    edits = ['dateAdded', 'dateModified']
    unwanted = ['length','_id', 'tags', 'authorSlug']
    index = 0

    for prefix, data in quote.items():
        prefix = 'quote' if prefix == 'content' else prefix 
        if prefix in edits:
            prefix = f'{prefix[0:4].title()}  {prefix[4:]}'
        if prefix not in unwanted:
            label = tk.Label(frame, text=prefix.title(), anchor='w')
            label['highlightbackground'] = 'black'
            label['highlightcolor'] = 'black'
            label['highlightthickness'] = 1
            label['font'] = None, 11, 'bold'
            label.grid(column=0, row=index, sticky='new', padx=(5,1), pady=5)

            label = tk.Label(frame, text=data, anchor='w', justify='left', padx=5, pady=5)
            label['highlightbackground'] = 'black'
            label['highlightcolor'] = 'black'
            label['highlightthickness'] = 1
            label['wraplength'] = 400
            label.grid(column=1, row=index, sticky='new', padx=(1,5), pady=5)

        index += 1

title = tk.Label(root, text='Quote of the day', font=(None, 25, 'bold'), pady=8, padx=8)
title['bg'] = 'slategray'
title['fg'] = 'white'
title.grid(column=0, row=0, sticky='new', padx=5, pady=5)



get_quote()

button = tk.Button(root, text='Get Random Quote', command=get_quote)
button.grid(column=0, row=2, sticky='news', padx=5, pady=5)

root.mainloop()