-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGUI.py
97 lines (70 loc) · 2.61 KB
/
GUI.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
from kivy.clock import mainthread
from kivy.config import Config
import kivy
from time import sleep
Config.set('graphics', 'width', 1580)
Config.set('graphics', 'height', 820)
from kivymd.uix.label import MDLabel
from kivy.uix.screenmanager import ScreenManager
from kivy.properties import ObjectProperty
from kivymd.uix.screen import Screen
from kivy.lang import Builder
from kivymd.app import MDApp
from client import Client
from kivy.core.window import Window
import threading
client = Client()
t = threading.Thread(target=client.recv)
class ManageScreens(ScreenManager):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
self.transition = kivy.uix.screenmanager.NoTransition()
class Main(MDApp):
def build(self) -> None:
self.theme_cls.theme_style = 'Dark'
self.title = "myFriends"
kv = Builder.load_file('my.kv')
return kv
class LogInWindow(Screen):
username = ObjectProperty(None)
password = ObjectProperty(None)
def login(self):
return client.login(self.username.text, self.password.text)
def clear_text_fields(self):
self.username.text = str()
self.password.text = str()
class RegisterWindow(Screen):
username = ObjectProperty(None)
password = ObjectProperty(None)
def register(self):
return client.register(self.username.text,self.password.text)
def clear_text_fields(self):
self.username.text = str()
self.password.text = str()
class CustomLabel(MDLabel):
pass
class MainScreen(Screen):
messages = ObjectProperty(None)
text = ObjectProperty(None)
def __init__(self, **kw):
super(MainScreen,self).__init__(**kw)
Window.bind(on_key_down=self._on_keyboard_down)
@mainthread
def add_message(self, username: str, message: str):
self.messages.add_widget(CustomLabel(text="[size=17][i][b]" + username + ":[/b][/i][/size] " + message))
def _on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
if self.text.focus and keycode == 40:
self.send()
self.text.text = str()
def on_pre_enter(self, *args):
sleep(1)
threading.Thread(target = self.receive_messages).start()
print(True)
def receive_messages(self):
while True:
if client.recv() == "message_done":
self.add_message(client.username,client.message)
def send(self) -> None:
client.send(self.text.text)
main = Main().run()
client.server.close()