聊天工具GUI开发,通过教材代码可以实现,现想借助qt5的designer工具再原代码进行修改实现,目前运行会自动关闭,请帮忙修改一下!
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'pyqt5018.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
# btnSend按钮与showDialog()绑定
def showDialog(self):
label = "Me:{}" \
.format(self.strftime("%Y-%M-%d %H:%M:%S", self.localtime()))
# 用toPlainText从输入框提取字符信息
message = self.chatText.toPlainText()
# 添加label信息
self.outputarea.append(label)
# 再添加message信息
self.outputarea.append(' ' + message)
# 传入消息后清空当前输入框
self.chatText.clear()
# 重新设准备好接受下一次输入
self.chatText.setFocus()
# 将每次输入信息存入程序同目录文本中,转历史消息执行saveMsg(txt)方法
self.saveMsg(message)
# 保存消息到save.txt文件,message参数传换为txt
def saveMsg(self,txt):
file = open('save.txt', 'a')
self.file.write(txt + '\n')
self.file.close()
# 点击取消为清除函数
def cancelMsg(self):
self.setupUi.chatText.clear()
# 判断是否存在历史消息文本,有写入,没有提示No Record
def getMsg(self):
if self.os.path.exists('save.txt'):
message = '\n历史消息显示:'
self.outputarea.append(message)
file = open('save.txt', 'r')
txt = file.read() + '\n'
self.outputarea.append(txt)
file.close()
else:
self.outputarea.append('No Record\n')
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(600, 400)
self.chatText = QtWidgets.QPlainTextEdit(Form)
self.chatText.setGeometry(QtCore.QRect(0, 0, 600, 230))
font = QtGui.QFont()
font.setFamily("Adobe 宋体 Std L")
font.setPointSize(12)
self.chatText.setFont(font)
self.chatText.setReadOnly(True)
self.chatText.setObjectName("chatText")
self.outputarea = QtWidgets.QPlainTextEdit(Form)
self.outputarea.setGeometry(QtCore.QRect(0, 250, 600, 100))
font = QtGui.QFont()
font.setFamily("Adobe 宋体 Std L")
font.setPointSize(12)
self.outputarea.setFont(font)
self.outputarea.setReadOnly(False)
self.outputarea.setObjectName("outputarea")
self.btnSend = QtWidgets.QPushButton(Form)
self.btnSend.setGeometry(QtCore.QRect(10, 360, 80, 30))
self.btnSend.clicked.connect(self.showDialog)
self.btnCancel = QtWidgets.QPushButton(Form)
self.btnCancel.setGeometry(QtCore.QRect(110, 360, 80, 30))
self.btnCancel.clicked.connect(self.getMsg)
self.btnHistory = QtWidgets.QPushButton(Form)
self.btnHistory.setGeometry(QtCore.QRect(490, 360, 80, 30))
self.btnHistory.setCheckable(False)
self.btnHistory.clicked.connect(self.cancelMsg)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.btnSend.setText(_translate("Form", "发送"))
self.btnCancel.setText(_translate("Form", "取消"))
self.btnHistory.setText(_translate("Form", "历史消息"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
目标结果如图
请帮忙修改一下。
改好了,你可以试试。
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
from datetime import datetime
import os
class Ui_Form(object):
# btnSend按钮与showDialog()绑定
def showDialog(self):
data_now = datetime.now()
label = "Me:{}----" \
.format(data_now.strftime("%Y-%M-%d %H:%M:%S"))
# 用toPlainText从输入框提取字符信息
message = self.outputarea.toPlainText()
self.show_text = self.chatText.toPlainText() + '\n'
self.show_text += label
self.show_text += message
print(self.show_text)
self.chatText.setPlainText(self.show_text)
# 传入消息后清空当前输入框
self.outputarea.clear()
# 重新设准备好接受下一次输入
self.outputarea.setFocus()
# 将每次输入信息存入程序同目录文本中,转历史消息执行saveMsg(txt)方法
self.saveMsg(self.show_text)
# 保存消息到save.txt文件,message参数传换为txt
def saveMsg(self,txt):
self.file = open('save.txt', 'a')
self.file.write(txt + '\n')
self.file.close()
# 点击取消为清除函数
def cancelMsg(self):
self.outputarea.clear()
# 判断是否存在历史消息文本,有写入,没有提示No Record
def getMsg(self):
if os.path.exists('save.txt'):
all_text = ''
message = '\n历史消息显示:'
file = open('save.txt', 'r')
txt = file.read() + '\n'
all_text = all_text + message + txt
self.chatText.setPlainText(all_text)
file.close()
else:
self.chatText.setPlainText('No Record\n')
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(600, 400)
self.chatText = QtWidgets.QPlainTextEdit(Form)
self.chatText.setGeometry(QtCore.QRect(0, 0, 600, 230))
font = QtGui.QFont()
font.setFamily("Adobe 宋体 Std L")
font.setPointSize(12)
self.chatText.setFont(font)
self.chatText.setReadOnly(True)
self.chatText.setObjectName("chatText")
self.outputarea = QtWidgets.QPlainTextEdit(Form)
self.outputarea.setGeometry(QtCore.QRect(0, 250, 600, 100))
font = QtGui.QFont()
font.setFamily("Adobe 宋体 Std L")
font.setPointSize(12)
self.outputarea.setFont(font)
self.outputarea.setReadOnly(False)
self.outputarea.setObjectName("outputarea")
self.btnSend = QtWidgets.QPushButton(Form)
self.btnSend.setGeometry(QtCore.QRect(10, 360, 80, 30))
self.btnSend.clicked.connect(self.showDialog)
self.btnCancel = QtWidgets.QPushButton(Form)
self.btnCancel.setGeometry(QtCore.QRect(110, 360, 80, 30))
self.btnCancel.clicked.connect(self.cancelMsg)
self.btnHistory = QtWidgets.QPushButton(Form)
self.btnHistory.setGeometry(QtCore.QRect(490, 360, 80, 30))
self.btnHistory.setCheckable(False)
self.btnHistory.clicked.connect(self.getMsg)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.btnSend.setText(_translate("Form", "发送"))
self.btnCancel.setText(_translate("Form", "取消"))
self.btnHistory.setText(_translate("Form", "历史消息"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())