0
点赞
收藏
分享

微信扫一扫

12/7每日总结

使用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

举报

相关推荐

0 条评论