SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
예제로 살펴보는 PyQt
파이콘 코리아 2017
임덕규
안녕하세요.
임덕규 입니다.
PyCon 2015 에서도
업무에서 빠르게 만들어
사용하는 PyQt 프로그래밍
을 주제로 발표
문서를 보란 말보다는
예제를 많이 만들어서
필요한 분이 언제든지
찾아서 쓰게 공개한다
오픈튜토리얼스에서
만들면서 공부하는 PyQt
https://opentutorials.org/course/2581
예제 코드는 GitHub를 통해서 공개
https://github.com/RavenKyu/OpenTutorials_PyQt
설치부터
pip install PyQt5 - 모듈 설치
pip install pyqt5-tools - Qt 개발 응용툴 설치
배포까지
pip install pyinstaller
pyinstaller main.py
* 설치와 배포는 윈도우를 기준입니다.
* 리눅스와 맥은 경우에 따라서 빌드를 해야 할 수도 있습니다.
PyQt로 개발은 크게 두 가지
Qt Designer 를 이용,
위젯을 배치 후 로직 작성
* 큰 어려움 없이 빠른 속도로 UI설계 가능
* 기본 위젯만 사용했다면, C++ Qt로 빠르게 포팅가능
Qt Designer 를 이용하지 않고,
코드로 위젯을 직접 배치
* 완전히 코드를 장악하고 있다는 정신승리
* 익숙해지면 Qt Designer를 사용하는 것이 오히려 더 불편
Qt Designer
* 마우스를 이용하여 위젯배치
* 손쉬운 속성 값 설정
* 위젯과 위젯의 행동 설정 가능
* 최종 결과물로 XML로 위젯정보 기록
* 확장명이 ui 인 파일을 생성
* UI구성에 필요한 기본 Qt 위젯을 제공
Qt Designer
ui 파일을 이용하여 개발 #1
XML로 이루어진 ui 파일을 pyuic5를 이용, python 파일로 변환
*에디터에서 자동완성 기능 사용가능
*디자인 변경시마다 ui 파일 변환과정이 귀찮다.
pyuic5
Qt Designer
ui 파일을 이용하여 개발 #2
uic 모듈의 loadUi() 메서드를 사용
*ui 파일을 변환없이 바로 사용 가능
*변환 과정이 없으므로 작업속도가 향상
*에디터에서 자동완성 기능을 사용할 수 없다.
하지만,
저 두 방법 모두 마음에 들지 않고
모든 것을 다 손으로 적어 넣기로 결심
*내 타자속도는 마우스 보다 빠르다. (그럴리 없다.)
*하드코딩으로 나온 소스가 깨끗. (사장님이 싫어합니다.)
*파이썬으로 변환된 ui 파일 내부를 보며 공부하거나 참고할 순 있다.
*실제로는 Qt Designer와 하드코딩을 함께 사용합니다.
*사용자가 파이썬으로 만든 커스텀 위젯은 Qt Designer에 등록할 수 없다.
메모장을 만들어 가며 배워보자
윈도우 메모장(notepad)를 PyQt로 작성
* 위젯의 최상위 QWidget 에 대한 이해
*창 위젯 생성 및 설정
*기본 위젯 사용
*시그널과 슬롯의 이해와 사용
*사용자 커스텀 위젯 생성 및 이해
*사용자 정의 시그널과 슬롯
*국제화 i18n(Internationalization)
*배포 방법
QWidget은 가장 기본적인 위젯
모든 위젯은 QWidget을 상속
* 윈도우 창을 위한 프레임과 타이틀바 제공
* 입력장치 이벤트 처리
* 출력 처리
* 위치와 크기등의 속성 값
QWidget
난 위젯이야
QPushButton
Widget은 상속의 상속을 받아 완성
간단하게 말해보면
* QWdiget - 위치, 크기
* QAbstractButton - 클릭, 토글, 버튼속성, 텍스트
* QPushButton - 버튼 모양, 버튼메뉴
QAbstractButton
QWidget
클릭가능해 난 위젯이야
누르는 맛이 있
는 버튼 모양
시그널과 슬롯
각 위젯이 가진 약속된 행위
* 모든 위젯은 시그널과 슬롯이 있다
* 시그널은 정의된 기능이 실행되면 결과 값을 보낸다
* 슬롯은 시그널이 보낸 값을 받아서 정의된 행위를 한다
* 시그널은 실행할 수 있는 함수가 아니다.
* 시그널과 슬롯을 연결시켜야 상호간의 통신 가능.
PushButton
clicked()
pressed()
released()
LED
turn_on()
toggled(bool)
turn_off()
trun(bool)
사용자 커스텀 위젯 만들기
QWidget을 상속 받거나 다른 위젯을 확장하거나
* QWdiget 을 상속 받아서 완전히 새로운 위젯 작성
* 이미 만들어져 있는 위젯을 상속받고 기능을 추가하거나 변경하기
* 새로운 시그널 및 슬롯 작성
* 여러 위젯을 합쳐서 하나의 위젯으로 만들기
SuperPushButton
QPushButton
QAbstractButton
QWidget
QWidget
QTextEdit
QPushButton
창 생성
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
b32b434637e7020b3648205a306dc88881c1
1cde
* QMainWindow을 상속 받은 클래스 생성
* 타이틀바의 메모장 아이콘 추가
MenuBar 추가
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
ddb11952dcb00645077e6aa2fc3eb67c96a1ce
5a
* 메뉴바와 메뉴내용 추가
* 단축키 추가
국제화 한국어 추가
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
79aca341cfe995af3c9e728dc0a5e57677cd79
56
* 국제화 툴을 이용하여 여러 언어를 지원
* 시스템 로케일에 따라 해당 국가 언어로 변환
* 언어 지원이 필요한 문자열에 tr() 함수를 사용
하여 문자열 입력
* pro 파일 제작
* tr()이 포함된 파이썬 파일명
* 생성할 언어파일명
* pylupdate5 -noobsolete notepad_i18n.pro
* 명시된 파일에서 tr()이 있는 부분을 검사
* 국가별 ts파일 생성
* lrelease.exe" translateko_KR.ts”
* qm파일로 변환
* lrelease.exe는 Qt5를 설치 또는
* pip install PyQt_tools 설치
국제화 예제
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
29617f50b8dfa83b8d4aee35221cc28f5f02c3
bc
* 언어를 자동 및 수동으로 설정
텍스트 에디터 추가
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
204815dec080b20d1b82e6c6f040e4b3ed9ec
a36
* QTextEdit를 추가하여 글을 쓸 수 있게한다
* 확장성을 고려하여 사용자 커스텀 위젯으로 만들
어 둔다.
메뉴 활성화
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
a36866caac5d1dfdf6b6e5628a7087169ff8feb6
* 메뉴에 기능별로 사용자 커스텀 시그널을 추가한
다. 예) 새로 만들기, 열기, 저장
* 새로 만들기, 열기 및 저장 클릭시 일어날 이슈
사항 고려
상태표시바 추가
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
4c3b3f0d0e60024403d4596f99d477666832e
c81
* 윈도우 하단에 정보를 표출할 수 있는 창 추가
* 사용자가 입력시 커서 위치 좌표 표출
* 드래그된 문자 수 표출
프린터 추가
예제소스
https://github.com/RavenKyu/
OpenTutorials_PyQt/commit/
ffdba77d5ad044dfc07072d075bb1fbd1e0775
3b
* 페이지를 설정할 수 있는 설정 다이얼로그
* 설정한 정보를 이용하여 출력할 수 있는 프린터
* 프린트 출력은 문서형태도 가능하
고 그림도 가능하다.
완성(정말?)
몇 개의 기능 (찾기, 바꾸기) 등은 포크하여 직접 완
성해 보시기 바랍니다.
추가 가능할만 기능
*드래프트 (임시저장) 기능
*일기장 기능
*Syntax Highlight 기능
PyCon 2017 예제로 살펴보는 PyQt
PyCon 2017 예제로 살펴보는 PyQt
QnA

Contenu connexe

Tendances

git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지jylee1229
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git민태 김
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개Jong-il Seok
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
Advanced c programming in Linux
Advanced c programming in Linux Advanced c programming in Linux
Advanced c programming in Linux Mohammad Golyani
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
Learn flask in 90mins
Learn flask in 90minsLearn flask in 90mins
Learn flask in 90minsLarry Cai
 
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...Teamstudio
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드chandler0201
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요chcbaram
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
 
강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더chcbaram
 
C++과 Lua script연동
C++과 Lua script연동C++과 Lua script연동
C++과 Lua script연동선협 이
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Junyoung Lee
 

Tendances (20)

git, 이해부터 활용까지
git, 이해부터 활용까지git, 이해부터 활용까지
git, 이해부터 활용까지
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 
버전관리시스템 종류와 소개
버전관리시스템 종류와 소개버전관리시스템 종류와 소개
버전관리시스템 종류와 소개
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
Advanced c programming in Linux
Advanced c programming in Linux Advanced c programming in Linux
Advanced c programming in Linux
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
Learn flask in 90mins
Learn flask in 90minsLearn flask in 90mins
Learn flask in 90mins
 
Python Interface Gráfica Tkinter
Python Interface Gráfica TkinterPython Interface Gráfica Tkinter
Python Interface Gráfica Tkinter
 
Iocp advanced
Iocp advancedIocp advanced
Iocp advanced
 
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
 
Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
강좌 06 부트로더
강좌 06 부트로더강좌 06 부트로더
강좌 06 부트로더
 
Django Testing
Django TestingDjango Testing
Django Testing
 
C++과 Lua script연동
C++과 Lua script연동C++과 Lua script연동
C++과 Lua script연동
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)
 

Similaire à PyCon 2017 예제로 살펴보는 PyQt

Dev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptxDev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptxMUUMUMUMU
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt덕규 임
 
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장MinPa Lee
 
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기덕규 임
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaLazy Ahasil
 
Summernote 이야기 - 홍영택님(@hackerwins)
Summernote 이야기 - 홍영택님(@hackerwins)Summernote 이야기 - 홍영택님(@hackerwins)
Summernote 이야기 - 홍영택님(@hackerwins)이상한모임
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows TerminalOnGameServer
 
1. github action을 활용한 CI
1. github action을 활용한 CI1. github action을 활용한 CI
1. github action을 활용한 CIDEVELOPER.NET
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfLee Dong Wook
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationUbuntu Korea Community
 
Win10 iot core_pi2
Win10 iot core_pi2Win10 iot core_pi2
Win10 iot core_pi2WeAreDev
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍chcbaram
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료지원 정
 
ifcpp build guide
ifcpp build guideifcpp build guide
ifcpp build guideJUNHEEKIM27
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJSEunYoung Kim
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트iFunFactory Inc.
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modulesJay Kim
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptxssuserf875e6
 

Similaire à PyCon 2017 예제로 살펴보는 PyQt (20)

Dev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptxDev Rookie 파이썬 GUI.pptx
Dev Rookie 파이썬 GUI.pptx
 
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQtPyCon 2015 - 업무에서 빠르게 활용하는 PyQt
PyCon 2015 - 업무에서 빠르게 활용하는 PyQt
 
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장PyQGIS와 PyQt를 이용한 QGIS 기능 확장
PyQGIS와 PyQt를 이용한 QGIS 기능 확장
 
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
PyCon2018 PyQt로 만드는 웹 기반 어플리케이션 만들기
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & Nana
 
Summernote 이야기 - 홍영택님(@hackerwins)
Summernote 이야기 - 홍영택님(@hackerwins)Summernote 이야기 - 홍영택님(@hackerwins)
Summernote 이야기 - 홍영택님(@hackerwins)
 
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
게임 개발에 도움을 주는 CruiseControl.NET과 Windows Terminal
 
1. github action을 활용한 CI
1. github action을 활용한 CI1. github action을 활용한 CI
1. github action을 활용한 CI
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdf
 
Python을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop ApplicationPython을 이용한 Linux Desktop Application
Python을 이용한 Linux Desktop Application
 
Win10 iot core_pi2
Win10 iot core_pi2Win10 iot core_pi2
Win10 iot core_pi2
 
강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍강좌 05 통신용 PC 프로그래밍
강좌 05 통신용 PC 프로그래밍
 
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
오픈소스 컨트리뷰톤 2020 backend.ai 발표자료
 
Git lecture1
Git lecture1Git lecture1
Git lecture1
 
ifcpp build guide
ifcpp build guideifcpp build guide
ifcpp build guide
 
Data-binding AngularJS
Data-binding AngularJSData-binding AngularJS
Data-binding AngularJS
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx2022.08 멘토링 자료.pptx
2022.08 멘토링 자료.pptx
 

PyCon 2017 예제로 살펴보는 PyQt