-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainWindow.py
More file actions
74 lines (57 loc) · 2.47 KB
/
MainWindow.py
File metadata and controls
74 lines (57 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import json
from datetime import datetime
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QMainWindow, QPlainTextEdit, QSplitter, QTextEdit, QWidget, QHBoxLayout, \
QPushButton, QSizePolicy, QVBoxLayout, QLabel, QLineEdit
from Thread import Thread
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.thread = Thread(self)
self.thread.start()
self.thread.sigMsg.connect(self.onMsg)
self.thread.sigSendSuccess.connect(self.onSendSuccess)
def initUI(self):
self.textEdit = QTextEdit()
self.textEdit.setReadOnly(True)
widget = QWidget()
widget.setMaximumHeight(200)
widget.setLayout(QVBoxLayout())
hLayout = QHBoxLayout()
self.nameLineEdit = QLineEdit()
hLayout.addWidget(QLabel("名称:"))
hLayout.addWidget(self.nameLineEdit)
widget.layout().addLayout(hLayout)
hLayout2 = QHBoxLayout()
widget.layout().addLayout(hLayout2)
self.textEdit2 = QTextEdit()
self.sendBtn = QPushButton('发送')
self.sendBtn.setSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Expanding)
hLayout2.addWidget(self.textEdit2)
hLayout2.addWidget(self.sendBtn)
splitter = QSplitter(Qt.Vertical)
splitter.addWidget(self.textEdit)
splitter.addWidget(widget)
self.setCentralWidget(splitter)
self.sendBtn.clicked.connect(self.onSend)
def closeEvent(self, event, /):
self.thread.running = False
self.thread.wait()
def onMsg(self, msg):
try:
js = json.loads(msg)
self.textEdit.append(f'<p><b style="color: #3574F0;">{js.get("name", "Unknown")}</b> <span style="color: #7A7E85;">{js.get("time", "Unknown")}</span></p>')
self.textEdit.append("")
self.textEdit.append(f'{js.get("msg", "Unknown")}')
self.textEdit.append("")
except:
self.textEdit.append("")
self.textEdit.append(f"{msg}")
self.textEdit.append("")
def onSendSuccess(self):
self.sendBtn.setDisabled(False)
def onSend(self):
self.sendBtn.setDisabled(True)
self.thread.msg = json.dumps({"name":self.nameLineEdit.text(), "time":datetime.now().strftime("%Y年%m月%d日 %H:%M:%S"), "msg":self.textEdit2.toPlainText()})
self.textEdit2.clear()