使用pyqt与百度千帆大模型进行了结合
实现了NPC在设定场景下连续对话
代码如下
# coding: utf-8
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton
from PyQt5.QtGui import QPixmap, QFont
from PyQt5 import QtCore
import PyQt5.QtGui as QtGui
from api import dialogue_once,dialogue
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口大小和标题
self.setGeometry(100, 100, 1444, 777)
self.setWindowTitle("太爷爷")
# 设置背景图片
background = QPixmap("可爱上帝.png")
background = background.scaled(self.size(), QtCore.Qt.IgnoreAspectRatio)
palette = self.palette()
palette.setBrush(QtGui.QPalette.Window, QtGui.QBrush(background))
self.setPalette(palette)
# 在中央放一个显示dialogue_once返回值的透明底文本框
input_text = '嘿,小子,我是上帝,你重生了,相信你的上一世一定有很多想做但是没有做的事情,接下来我要给你一次机会来操控你的下一生,听起来怎么样?在此之前,先来介绍你的出身,这要从你的太爷爷说起......'
# input_text = dialogue_once()
# 将input_text字符串中的换行符去掉后每隔50个字符加一个换行符
input_text = input_text.replace('\n', '')
input_text = '\n'.join([input_text[i:i + 50] for i in range(0, len(input_text), 50)])
self.textbox = QLabel(input_text, self)
font = QFont()
font.setPointSize(10)
self.textbox.setFont(font)
self.textbox.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
self.textbox.setAlignment(QtCore.Qt.AlignCenter)
self.textbox.setGeometry(550, 150, 888, 300)
# 为文本框添加滚动条
self.textbox.setWordWrap(True)
self.textbox.setScaledContents(True)
self.textbox.setOpenExternalLinks(True)
self.textbox.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
self.textbox.setFrameShape(QLabel.NoFrame)
self.textbox.setFrameShadow(QLabel.Plain)
self.textbox.setLineWidth(0)
self.textbox.setMidLineWidth(0)
self.textbox.setScaledContents(True)
self.textbox.setMargin(0)
self.textbox.setIndent(0)
self.textbox.setOpenExternalLinks(True)
self.textbox.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse)
self.textbox.setFrameShape(QLabel.NoFrame)
self.textbox.setFrameShadow(QLabel.Plain)
self.textbox.setLineWidth(0)
self.textbox.setMidLineWidth(0)
self.textbox.setScaledContents(True)
self.textbox.setMargin(0)
self.textbox.setIndent(0)
self.textbox.setOpenExternalLinks(True)
# 为文本框添加边框
self.textbox.setStyleSheet("border: 2px solid black;")
# # 在中央放置一个可以显示字符串变量中文字的透明底文本框
# self.textbox = QLabel(input_text, self)
# font = QFont()
# font.setPointSize(20)
# self.textbox.setFont(font)
# self.textbox.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
# self.textbox.setAlignment(QtCore.Qt.AlignCenter)
# self.textbox.setGeometry(500, 50, 500, 200)
# 在合适的位置放置一个可以由用户输入并存储到变量中的输入框
self.inputbox = QLineEdit(self)
self.inputbox.setGeometry(650, 530, 400, 100)
# 美化输入框
self.inputbox.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
self.inputbox.setAlignment(QtCore.Qt.AlignCenter)
self.inputbox.setPlaceholderText("请输入你的对话")
self.inputbox.setMaxLength(100)
self.inputbox.setClearButtonEnabled(True)
# 将输入框的内容默认在靠左显示
self.inputbox.setAlignment(QtCore.Qt.AlignLeft)
# 添加保存按钮
self.save_button = QPushButton("发送对话", self)
self.save_button.setGeometry(1100, 530, 100, 100)
self.save_button.clicked.connect(self.on_save_button_clicked)
# 当按下回车键时,触发保存按钮的点击事件
self.inputbox.returnPressed.connect(self.save_button.click)
def on_save_button_clicked(self):
# 将输入框中的文本保存到变量中
input_text = self.inputbox.text()
# 将输入框中的文本清空
self.inputbox.clear()
# 将输入框中的文本放进dialogue函数中,得到返回值
output_text = dialogue(input_text)
# 将返回值中的换行符去掉后每隔50个字符加一个换行符
output_text = output_text.replace('\\n', '')
output_text = '\n'.join([output_text[i:i + 50] for i in range(0, len(output_text), 50)])
# 将返回值中的\n\n去掉
# 将返回值放进文本框中
self.textbox.setText(output_text)
# 将返回值放进文本框中
self.textbox.setText(output_text)
return input_text
if __name__ == '__main__':
while 1:
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
https://t.bilibili.com/872394375646150712?share_source=pc_native
标签:总结,12,text,每日,inputbox,input,255,self,textbox From: https://blog.51cto.com/u_16196891/8728434