In this tutorial I will show you a python script with PyQt6 and OpenAI that generates an image based on OpenAI token keys and a text that describes the image.
The script is quite simple and requires the installation of python packets: PyQt6,openai.
In the script you can find a python class called MainWindow in which graphic user interface elements are included and openai elements for generating images.
You also need a token key from the official openai page to use for generation.
The script runs with the command python numa_script.py and in the two editboxes is inserted chaie from token API OpenAI and the text that will describe the image to be generated.
This is the python script with the source code:
#create_image.py
import os
import openai
from PyQt6.QtCore import Qt, QSize
from PyQt6.QtGui import QImage, QPixmap
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QVBoxLayout, QHBoxLayout, QPushButton
import requests
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.resize(500, 500)
self.setWindowTitle("AI Data Input")
# create widgets
self.image_label = QLabel(self)
self.image_label.setFixedSize(QSize(300, 300))
self.url_edit = QLineEdit(self)
self.api_key = QLineEdit(self)
self.send_button = QPushButton("Send data to AI", self)
self.send_button.clicked.connect(self.on_send_button_clicked)
# create layout
layout = QVBoxLayout()
url_layout = QHBoxLayout()
url_layout.addWidget(QLabel("Text request AI: "))
url_layout.addWidget(self.url_edit)
api_layout = QHBoxLayout()
api_layout.addWidget(QLabel("OpenAI API Key: "))
api_layout.addWidget(self.api_key)
layout.addLayout(url_layout)
layout.addLayout(api_layout)
layout.addWidget(self.image_label, alignment=Qt.AlignmentFlag.AlignCenter)
layout.addWidget(self.send_button, alignment=Qt.AlignmentFlag.AlignCenter)
self.setLayout(layout)
def on_send_button_clicked(self):
#openai.api_key = "your api key generated by OpenAI API"
openai.api_key = self.api_key.text()
PROMPT = self.url_edit.text()
url = openai.Image.create(
prompt=PROMPT,
n=1,
size="256x256",
)
# extract the url value
url_value = url['data'][0]['url']
if url_value :
response = requests.get(url_value)
if response.status_code == 200:
image = QImage.fromData(response.content)
pixmap = QPixmap.fromImage(image)
self.image_label.setPixmap(pixmap)
self.image_label.setScaledContents(True)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
This is the result of the source script: