from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QEvent, pyqtSignal
from PyQt6.QtGui import QKeySequence, QShortcut
import resources
import gpt4_chat
import datetime
from threading import Thread
class MyTextEdit(QtWidgets.QTextEdit):
enterPressed = pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
def keyPressEvent(self, event):
if event.key() in (QtCore.Qt.Key.Key_Enter, QtCore.Qt.Key.Key_Return):
self.enterPressed.emit()
else:
super().keyPressEvent(event)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(1405, 819)
MainWindow.setStyleSheet("")
MainWindow.setAnimated(True)
MainWindow.setDocumentMode(False)
MainWindow.setUnifiedTitleAndToolBarOnMac(True)
self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
self.centralwidget.setStyleSheet("")
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(parent=self.centralwidget)
self.frame.setGeometry(QtCore.QRect(0, 0, 1405, 777))
self.frame.setStyleSheet("background: transparent; border: 0px ;\n"
"background-image: url(:/NewPref/background_merged.png);")
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.widget = QtWidgets.QWidget(parent=self.frame)
self.widget.setGeometry(QtCore.QRect(342, 181, 738, 554))
self.widget.setStyleSheet("background: transparent; border: 0px ;\n"
"background-image: url(:/NewPref/chatbox.png);")
self.widget.setObjectName("widget")
self.ChatBox = QtWidgets.QTextEdit(parent=self.widget)
self.ChatBox.setGeometry(QtCore.QRect(70, 108, 610, 347))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.ChatBox.sizePolicy().hasHeightForWidth())
self.ChatBox.setSizePolicy(sizePolicy)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.NoBrush)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.PlaceholderText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.NoBrush)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.PlaceholderText, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Button, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Text, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.ButtonText, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.NoBrush)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Base, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Window, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.PlaceholderText, brush)
self.ChatBox.setPalette(palette)
font = QtGui.QFont()
font.setPointSize(10)
self.ChatBox.setFont(font)
self.ChatBox.setStyleSheet("color: white; background: transparent; border: 0px ;\n"
"background-image: url(:/NewPref/ChatTextBox.png);")
self.ChatBox.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustIgnored)
self.ChatBox.setTabChangesFocus(False)
self.ChatBox.setReadOnly(True)
self.ChatBox.setObjectName("ChatBox")
self.send_button = QtWidgets.QPushButton(parent=self.widget)
self.send_button.setGeometry(QtCore.QRect(690, 490, 16, 16))
self.send_button.setStyleSheet("background: transparent; border: 0px ;\n"
"background-image: url(:/NewPref/Layer 1.png);")
self.send_button.setObjectName("send_button")
self.user_input = MyTextEdit(self.widget)
self.user_input.setGeometry(QtCore.QRect(72, 467, 611, 61))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.user_input.sizePolicy().hasHeightForWidth())
self.user_input.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.user_input.setFont(font)
self.user_input.setStyleSheet("color: white; background: transparent; border: 0px ;\n"
"background-image: url(:/NewPref/ChatLine.png);")
self.user_input.setObjectName("user_input")
self.widget_2 = QtWidgets.QWidget(parent=self.frame)
self.widget_2.setGeometry(QtCore.QRect(700, 20, 654, 712))
self.widget_2.setStyleSheet("background: transparent; border: 0px ;\n"
"background-image: url(:/NewPref/Right buttons.png);")
self.widget_2.setObjectName("widget_2")
self.widget_2.raise_()
self.widget.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1405, 22))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.send_button.setText(_translate("MainWindow", "PushButton"))
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
self.send_button.clicked.connect(self.send_message)
self.user_input.enterPressed.connect(self.send_message)
self.conversation_list = [{'role': 'system', 'content': 'You are a helpful SuperAI assistant!'}]
def send_message(self):
user_input = self.user_input.toPlainText()
if user_input.lower() == 'quit':
self.close()
return
if user_input:
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
formatted_message = f"{timestamp}\nUser: {user_input}\n\n"
self.ChatBox.append(formatted_message)
self.user_input.clear()
self.conversation_list.append({'role': 'user', 'content': user_input})
Thread(target=self.get_response, args=(self.conversation_list,)).start()
def get_response(self, conversation_list):
try:
response = gpt4_chat.chat_gpt4(conversation_list)
conversation_list.append({'role': 'assistant', 'content': response})
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
formatted_response = f"{timestamp}\nGPT-4: {response}\n\n"
self.ChatBox.append(formatted_response)
except Exception as e:
print(f'Error: {e}')
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = MainWindow()
MainWindow.show()
sys.exit(app.exec())