MaxSSD / OpenAI-GUI

Graphical user interface (GUI) for interacting with various OpenAI models. With this GUI, you can easily run various language and machine learning models, such as GPT-3 and DALL-E, without needing to use the command line.
MIT License
31 stars 8 forks source link

Did you make a custom icon? #3

Closed PySimpleGUI closed 1 year ago

PySimpleGUI commented 1 year ago

I saw this comment:

    # icon='C:/OpenAI-GUI/icon.ico'

Which makes me think maybe you made a custom icon.

Here's a base64 encoded version of OpenAI's logo:

icon = b'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'

If added to the window creation:

    window = sg.Window('OpenAI GUI', layout, resizable=True, right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_VER_EXIT, icon=icon)

Then the program's titlebar looks like this on my PC: image

And it looks like this in the taskbar:

image

You can use the program psgresizer to convert from any format into a Base64 encoded PNG file that can then be pasted into your PySimpleGUI code directly like the line of code above.

image

MaxSSD commented 1 year ago

I just pushed a commit with both of your suggestions. Also added two text-to-code models (code-davinci-002 and code-cushman-001) able to generate JS snippets.

Thank you for your input, nice touch.

What I meant previously, by two buttons to one key. Is to have "Answer" in OpenAI tab and "Create image" in Dall-E, bind to the Return keyboard key but execute different functions respectively inside the tabs.

[sg.Button("Answer", bind_return_key=True) [sg.Button("Create image", bind_return_key=True)

Working in Tkinter:

active_tab = ["OpenAI", "Dall-E"]
def handle_return(event):
    global active_tab
    if active_tab == 'OpenAI':
        Answer.invoke()
    elif active_tab == 'Dall-E':
        Create_image.invoke()

root.bind('<Return>', handle_return)
PySimpleGUI commented 1 year ago

I would look for which element has focus when the return key was pressed. That's the important part. Rather than bothering with binding return key in the button, just bind to the window and see who has focus when it's pressed.