오늘 한 일 :
OO님 업무 이어 받아 UI 소스 코드 작성함. 파일을 각자 다르게 구분하다보니, 이미지 경로를 제대로 못불러오는 현상 발생
qrc(리소스)를 사용하여 인코딩 후 경로 설정하여 인코딩함
''' pyuic --import-from=Code.front.ui -x {ui}.ui -o ui_class_{ui}.py '''
명령어를 사용하면 된다.

1. pyuic
# ui_compiler.py
import os
import sys
if __name__ == '__main__':
os.system(f"pyrcc5 ../src_img/my_qrc.qrc -o my_qrc_rc.py")
uis = ['page_friend_list_ui', 'page_join_ui', 'page_login_ui', 'page_talk_room_list_ui', 'page_talk_room_ui',
'widget_talk_room_invite_user_list', 'widget_search_talk_room_member_list',
'widget_profile_item_ui', 'widget_chat_room_item_ui', 'profile_page_ui', 'widget_invite_user_item','widget_talk_room_invite_user_list_in_chat_room']
for ui in uis:
# os.system(f'python -m PyQt5.uic.pyuic --from-imports -x {ui}.ui -o ui_class_{ui}.py')
os.system(f'python -m PyQt5.uic.pyuic --import-from=Code.front.ui -x {ui}.ui -o ui_class_{ui}.py')
pyrcc 모듈을 디자이너 사용할 때 초창기 때 쓰고 쓸 일이 없을 줄 알았는데, 이 방법만 안다면 경로 문제가 의외로 수월하게 풀릴 것 같다
2. json
class KKOEncoder(JSONEncoder):
def __init__(self):
super().__init__()
def encode(self, o) -> str:
if isinstance(o, list) and isinstance(o[0], User):
temp_list = list()
for obj in o:
str_obj = obj.toJSON()
temp_list.append(str_obj)
return json.dumps(temp_list)
elif isinstance(o, list) and isinstance(o[0], Message):
temp_list = list()
for obj in o:
str_obj = obj.toJSON()
temp_list.append(str_obj)
return json.dumps(temp_list)
return json.dumps(o, default=lambda o: o.__dict__)
def default(self, o):
return o.__dict__
class KKODecoder(JSONDecoder):
def __init__(self):
super().__init__()
def decode_any(self, o, **kwargs):
o: str
if o.startswith("["): # list type
list_type_obj = json.loads(o)
temp_list = list()
for obj in list_type_obj:
one_obj = self.decode_obj(obj)
temp_list.append(one_obj)
return temp_list
else:
return self.decode_obj(o, **kwargs)
def decode_obj(self, o, **kwargs):
dict_obj = super().decode(o, **kwargs)
if 'user_talk_room_id' in dict_obj.keys():
return UserTalkRoom(dict_obj['user_talk_room_id'], dict_obj['user_id'], dict_obj['talk_room_id'])
elif 'user_id' in dict_obj.keys():
return User(dict_obj['user_id'], dict_obj['username'], dict_obj['password'], dict_obj['nickname'])
elif 'message_id' in dict_obj.keys():
temp_user = User(*dict_obj['user_obj'].values())
return Message(dict_obj['message_id'], dict_obj['sender_user_id'], dict_obj['talk_room_id'],
dict_obj['contents'], dict_obj['send_time_stamp'], dict_obj['long_contents_id'], temp_user)
elif 'talk_room_id' in dict_obj.keys():
return TalkRoom(dict_obj['talk_room_id'], dict_obj['talk_room_name'], dict_obj['open_time_stamp'])
elif 'contents_id' in dict_obj.keys():
return LongContents(dict_obj['contents_id'], dict_obj['contents_type'], dict_obj['long_text'],
dict_obj['image'])
list type의 json을 분리해준다.
3중 이상의 리스트는 구현하지 않도록 설계하여, 해당 로직으로 끝나는 걸 다행이라 생각한다.
내일은 정말 마무리단계이다. 오늘 꽤 많이 진행했는데, 잘 마무리 할 수 있으면 좋겠다.
감사합니다.
'광주인력개발원' 카테고리의 다른 글
크크오톡 팀프로젝트 - 5일차 - 개발일지 [2023-07-15 학습일지] (0) | 2023.07.30 |
---|---|
[팀 개발일지] 5일차 | 크크오톡 | 1조 Going To Pro Level 팀 | 파이썬 단체 채팅 프로그램 | (0) | 2023.07.30 |
[팀 개발일지] 4일차 | 크크오톡 | 1조 Going To Pro Level 팀 | 파이썬 단체 채팅 프로그램 | (0) | 2023.07.30 |
크크오톡 팀프로젝트 - 3일차 - 개발일지 [2023-07-13 학습일지] (0) | 2023.07.30 |
크크오톡 팀프로젝트 - 2일차 - 개발일지 [2023-07-12 학습일지] (0) | 2023.07.30 |