-
Notifications
You must be signed in to change notification settings - Fork 0
/
pyqt.py
74 lines (53 loc) · 1.83 KB
/
pyqt.py
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 sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import uic
import time
import socket
import redis
# from .redis_connect import redis_connect as rc
form_class = uic.loadUiType("chat.ui")[0]
### redis에 저장되어 있는 채팅목록 가지고 오기 ###
class Worker(QThread):
finished = pyqtSignal(str)
def __init__(self, sec=0, parent=None):
super().__init__()
self.user_r = redis.Redis(host='3.34.134.147', port=6379, db=0)
self.user_pub_sub = self.user_r.pubsub()
self.user_pub_sub.subscribe('chat_server')
def run(self):
while True:
message = self.user_pub_sub.get_message()
if message:
msg = str(message['data'])[1:]
self.finished.emit(msg)
print(msg)
time.sleep(0.01)
class MyChat(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
self.worker = Worker()
self.worker.finished.connect(self.get_text_brower)
self.worker.start()
self.my_ip_addr = socket.gethostbyname(socket.getfqdn())
self.my_ip.setText(self.my_ip_addr)
self.input_text.returnPressed.connect(self.append_text)
self.user_r = redis.Redis(host='3.34.134.147', port=6379, db=0)
self.user_r.pubsub()
def append_text(self):
text = self.input_text.text()
message = str(self.my_ip_addr + " : " + text)
self.user_r.publish('chat_server', message)
self.input_text.clear()
def send_redis(self):
pass
@pyqtSlot(str)
def get_text_brower(self, data):
self.text_browser.append(data)
if __name__ == "__main__":
print(socket.gethostbyname(socket.getfqdn()))
app = QApplication(sys.argv)
myChat = MyChat()
myChat.show()
app.exec_()