0

I am trying to make a programm that tells you a input amount of the words rhymig with the word you choose. i am doing it in PySimpleGUI and i dont know how to print the loop in to a PySimpleGUI window. Could someone help. Thanks in advance -Josh

import PySimpleGUI as sg
import requests

layout = [[sg.Text('What would you like to hear rhymes about: '), sg.InputText()],
      [sg.Submit(), sg.Cancel()]]

window = sg.Window('Rhyme.', layout)
event, values = window.read()

rhyme = values[0]

words = requests.get('https://api.datamuse.com/words?rel_rhy=' + rhyme)

words_json = words.json()
window.close()

layout = [[sg.Text(f'How many rhymes about {rhyme} would you like to hear: '), sg.InputText()],
          [sg.Submit(), sg.Cancel()]]

window = sg.Window('Rhyme.', layout)
event, values = window.read()

num = values[0] 

window.close()

layout = [[sg.Text(#I dont Know how to print the list here) 
JoshMann15
  • 35
  • 8

3 Answers3

0

If you want to show a list in Text(), you can simple use join(). I think the list you want to show is words_json, but, when I ran your code this list is empty.

However use this code to shoe a list:

layout = [[sg.Text(','.join(words_json))]]
Zain Arshad
  • 1,885
  • 1
  • 11
  • 26
0

this code will work for you.

import PySimpleGUI as sg
import requests

layout = [[sg.Text('What would you like to hear rhymes about: '), sg.InputText()],
      [sg.Submit(), sg.Cancel()]]

window = sg.Window('Rhyme.', layout)
event, values = window.read()

rhyme = values[0]

words = requests.get('https://api.datamuse.com/words?rel_rhy=' + rhyme)

words_json = words.json()
window.close()

layout = [[sg.Text(f'How many rhymes about {rhyme} would you like to hear: '), sg.InputText()],
          [sg.Submit(), sg.Cancel()]]

window = sg.Window('Rhyme.', layout)
event, values = window.read()

num = values[0] 

window.close()

layout = []
for x in words_json:
    layout = layout + [sg.Text(x['word'])]

layout = [layout]

window = sg.Window('word',layout)

event, values = window.read()

window.close()
Bhargav Desai
  • 941
  • 1
  • 5
  • 17
0

It was a good exercise for me. Github I customized this as a reference.

import PySimpleGUI as sg
import requests
from bs4 import BeautifulSoup
import json

def get_rhyme(rhyme):
    url = ('https://api.datamuse.com/words?rel_rhy={}').format(rhyme)
    words = requests.get(url)
    soup = BeautifulSoup(words.text, 'lxml')
    words_json = []
    words_json = words.json()
    return words_json


def gui():
    layout = [[sg.Text('What would you like to hear rhymes about: ', size=(20,1))],
              [sg.Input('', key='-INPUT-'), sg.Submit(), sg.Cancel()],
              [sg.Output(size=(50,50), key='-OUTPUT-')],
              [sg.Button('Clear'), sg.Button('Exit')]]

    window = sg.Window('Rhyme Search beta', keep_on_top=True, layout=layout)

    output_elem = window.FindElement('-OUTPUT-')

    while True:
        event, values = window.Read()    # read with a 5 second timeout

        print(event, values)
        if event in ('Exit', None):
            break
        elif event == 'Submit':
            out_json = get_rhyme(values['-INPUT-'])
            output_elem.update(out_json)
        elif event == 'Clear':
            window['-OUTPUT-'].update('')

    window.close()

gui()
r-beginners
  • 31,170
  • 3
  • 14
  • 32