Qt Designer 설치하기

이미지
개요 오늘은 Qt Designer 설치방법에 대해 설명하고자 합니다. Qt Designer는 Qt앱 생성시 GUI ( G raphic U ser I nterface) 를 쉽게 구성하고 배치하는 것을 도와주는 도구 입니다. [Qt Designer 실행화면] C++언어로 Qt를 사용하는 경우는 Qt Creator 설치시 같이 설치되어 바로 사용이 가능하지만 파이썬의 경우 별도 패키지를 설치 후 사용가능합니다. 그럼 파이썬에서 Qt Designer를 설치하는 방법을 살펴보겠습니다.

파이썬 설치 with PyCharm

이미지
개요 오늘은 파이썬 개발툴 중 개인적으로 가장 선호하는 파이참(PyCharm) 설치방법 및 파이썬(Python) 과 연동 하는 방법을 설명하려 합니다. 저는 Windows 운영체제에서 설치를 진행했지만 파이썬, 파이참은 macOS, Linux 에서도 설치가능합니다. 파이썬은 프로그래밍 언어의 한 종류이며, 파이참은 파이썬을 이용한 프로그래밍을 편리하게 진행하도록 도와주는 도구, 툴입니다. 그림판으로도 얼마든지 그림을 그릴 수 있지만 (파이참이 없더라도 파이썬 IDLE로 개발 가능하지만), 포토샵 같은 전문가용 툴을 쓴다면 수준 높은 결과물을 만들어 내기가 좀 더 수월합니다. 이 게시물은 파이썬 설치, 파이참 설치, 파이썬 패키지 설치 3가지 과정으로 진행됩니다.  그럼 설치를 진행해 보겠습니다.

재귀호출을 활용한 GUI 랜덤미로 생성

이미지
개요 이번엔 Python, PyQt5를 이용해 랜덤 미로 생성기 (Maze Generator) 를 만들어 보았습니다.  자세한 내용은 소스코드 분석을 참조하기 바라며, 동작방식은 아래와 같습니다. 화면에 표시되는 위젯(윈도우)을 15x15 크기로 잘라, 작은 격자 사각형을 2차원 리스트에 저장 해 둡니다. 미로 생성이 시작되면 현재 격자의 행,열에서 이동가능한 방향 (상, 하, 좌, 우)을 랜덤으로 선택해 이동합니다. (단, 이미 방문한 곳이 아닌 경우, 재귀호출 , Push Stack ) 만약 더 이상 이동가능한 방향이 없는 경우는 재귀호출의 스택이 풀리며 ( Pop Stack ) 퇴각 검색 ( Backtrack )이 진행되고, 이동가능한 방향이 있는지 다시 찾는 원리로 모든 격자를 방문하게 됩니다.   15 X 15 크기의 랜덤 미로 생성. (사이즈 변경가능) DFS (Depth First Search), 재귀호출을 이용해 구현. 미로 진행 방향에 따른 벽 생성 및 벽 삭제. (상,하,좌,우)  

SW 마이스터고 입학을 축하합니다.

안녕하세요. 오션코딩학원장 김주원 입니다.    저희 학원에는 입시반(SW특기자 전형등)을 운영하지 않지만, 고입, 대입, 편입 등을 준비하기 위해 수업을 듣는 학원생은 계십니다. 왜냐하면 프로그래밍을 공부하는 수업내용이 곧 입학시 면접이나 시험문제와 연관되기 때문입니다. 올해도 3명의 중3 학원생이 2022학년도 SW마이스터고 입학을 지원했었습니다. 이 중 2명의 학원생은 각각 대덕, 부산 소프트웨어 마이스터고 에 합격했습니다. 정말 축하드리고, 앞으로 더욱 성장하여 큰 꿈을 펼치길 기대합니다. 저는 학원 수업만 집중해 진행했는데 두 학생 다 여러가지 스스로 잘 준비해 좋은 결과가 있었습니다. 다만, 1명은 서류전형에서 탈락해 아직도 너무 아쉬운 마음이 듭니다. 봄부터 무더운 여름에도 꾸준히 저와 공부하며 실기면접도 준비해온 학생인데, 면접의 기회조차 주어지지 않아 아쉬움이 더욱 큽니다. 하지만, 프로그래밍에 관심이 있다면 얼마든지 수시, 정시를 준비해 원하는 대학의 컴퓨터 공학부에 지원하면 됩니다.   마지막으로, 미래에 프로그래밍을 직업 으로 삼고자 하는 분들께 몇 가지 조언을 하고 싶습니다.  개인적인 의견이므로 참조만 해주세요.   1. 좋아하는 일이 맞는지 잘 생각해 보세요. (세상은 넓고 할 일은 많습니다.) 2. C++은 꼭 공부하세요. (파이썬을 쓰더라도) 3. 영어, 수학은 개발자의 당연한 기초 지식입니다. 여담으로 제가 프로그래밍을 좋아하는 이유 중 하나는 역사가 짧고, 변화가 빠른 학문이기 때문입니다. 수학, 과학 등은 기원전부터도 존재해 왔지만 (이미 기본이 완성, 큰 변화 X) 인류가 컴퓨터를 본격적으로 활용하기 시작한 시기는 불과 30~40년 전 입니다. 하지만 그 짧은 기간동안 엄청난 변화와 혁신을 이끌어 왔으며, 현재 진행형이기 때문에 더욱 매력적이 아닌가 합니다. 감사합니다.

PyQt기반 회원가입, 로그인 앱 제작

이미지
개요 이번에는 Python, PyQt5 를 이용해 간단한 회원가입, 로그인 을 진행하는 앱을 만들어 보겠습니다. [회원 가입]   [로그인]      주요 기능은 아래와 같습니다. QTabWidget 을 활용해 회원가입, 로그인 위젯 분리 회원가입된 ID, PW는 파일에 저장 로그인시 파일에서 저장된 ID, PW를 읽어와 로그인 여부 판단   SQLite DB 를 사용하는 것보다 코드를 이해하는데 부담이 적을 것으로 판단합니다. Database 를 이해하는 분들은 이 코드를 수정해 DB 를 적용 해보기 바랍니다.

파이썬 반복문에서 리스트 삭제시 유의점

이미지
개요 오늘은 파이썬에서 많이 사용되는 자료형 (Data Type) 인 list 의 삭제 방법 에 대해 깊이 살펴보고자 합니다.   리스트 추가, 삽입, 검색 은 비교적 쉽게 구현 가능하지만, 삭제 는 상황에 따라 생각할 부분이 많습니다. [리스트의 다양한 삭제 경우] 리스트 특정 값 1개 삭제 리스트 인덱스 기반 (몇 번째 요소인지) 삭제 리스트 특정 값 전체 삭제 리스트 복사본을 이용한 삭제  지능형 리스트 (List Comprehension) 를 이용한 삭제

정보올림피아드 (햄버거 문제)

이미지
개요 안녕하세요.  학원생 중 정보올림피아드 대회를 준비하는 심화반 학생이 있어 같이 풀어본 문제입니다. 먼저 문제를 살펴보겠습니다. [출처 : 한국정보올림피아드, 2020년 중등부 2교시 문제]   예를 들어 입력 이 아래와 같다면, 12 1 HPHPHPHHPPHP 출력 은 아래와 같아야 합니다. 5   K가 2 라면 (햄거버를 먹을 수 있는 거리), 12 2 HPHPHPHHPPHP 출력 은 아래와 같아야 합니다. 6 문제풀이 1. 왼쪽부터 HPHPHP... 을 진행하며 P(사람)을 검색. 2. 사람(P)을 찾은 경우, 사람인덱스 기준 -K~+K 까지 햄버거 검색. 3. 햄버거가 있다면 (H를 만나면) 먹고, 햄버거 위치에 먹었다는 표시. (예, 'X') 4. 햄버거를 먹었다는 표시를 하는 이유는, 다음 P(사람)이 이미 먹은 햄버거를 또 먹는 것을 방지.  5. 전체적으로 테이블(HPHPHP...)을 반복하는 루프와 테이블 내 사람(P)를 만났을때 -K~+K를 반복하는 이중 루프로 구현. 6. 단, 테이블의 왼쪽에 사람이 있는 경우 -K가 0보다 작은 경우 , 테이블의 오른쪽 끝에 사람이 있는 경우, +K가 테이블의 길이를 초과 하는 경우를 주의. [햄버거 분배문제 해결 알고리즘]   소스코드 (파이썬) x = input('식탁길이, 선택거리:') y = input('햄버거, 사람 배치(H, P):') xx = x.split(' ') #n:식탁길이, k:거리 n = int(xx[0]) k = int(xx[1]) yy =...

파이썬으로 구현한 윈도우 파일탐색기

이미지
개요 이번 시간에는 Python, PyQt5 QTreeWidget 을 이용해 윈도우 탐색기 를 만들어 보겠습니다. Windows API 함수를 이용해 논리 드라이브를 찾고, 찾은 드라이브를 더블 클릭하면 하위 디렉토리, 파일을 검색해 트리 위젯에 추가합니다. 찾은 경로가 디렉토리인 경우에는 하위 디렉토리를 다시 검색 하고, 파일인 경우 기본 연결 프로그램으로 연결 해 파일을 열어서 보여줍니다. [윈도우 탐색기 앱 실행화면] 완성된 앱의 동작은 아래 동영상을 참조 바라며, 기능은 다음과 같습니다. 1. 윈도우 운영제체의 드라이브 찾기 2. 드라이브의 하위 디렉토리 or 파일 탐색 및 구분 (더블 클릭시) 3. 파일의 경우 더블 클릭시 기본 연결프로그램으로 연결 (*.txt는 메모장 등) 개발 환경 Windows 10 Pro 64bit Python 3.8.8 64bit, Pycharm PyQt5 5.15.3 소스코드 main.py 단일 파일로 구성되어 있으며, 소스코드를 먼저 살펴보고 설명을 이어가겠습니다. from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QTreeWidget, QTreeWidgetItem,QVBoxLayout from PyQt5.QtCore import Qt from ctypes import windll import sys import socket import string import os QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True) class Form(QWidget): def __init__(self): super().__init__() self....

Qt Mouse Wheel Event 처리하기

이미지
개요  이번 시간에는 다양한 곳에서 사용되는 마우스 휠 이벤트 (Wheel Event) 를 Python +PyQt5 에서 어떻게 감지하고 활용하는지 살펴보겠습니다.   마우스 휠 이벤트가 필요한 대표적인 경우는 다음과 같습니다. 화면 이동, 웹페이지 업, 다운 처리 이미지 줌인, 줌 아웃    먼저 완성된 결과물을 먼저 살펴보면 아래와 같습니다. [마우스 휠 이벤트 처리]   아래와 같은 순서로 진행됩니다. 1. 빈 위젯을 하나 생성 2. Ctrl 키 눌러진 상태에서 휠 이벤트가 발생 (줌인, 아웃으로 처리) 3. Ctrl 키 떨어진 상태에서 휠 이벤트가 발생 (일반적인 스크롤로 처리) 4. 휠 이벤트 발생시 Ctrl 키 여부를 감지, 각 변수에 저장 후 출력 사실 줌 이나 일반스크롤 로 처리하나 둘 다 개념은 같지만 줌의 경우는 휠 이벤트시(Ctrl O) 1씩 변화량을 가져가고 스크롤(Ctrl X) 은 좀 더 변화량이 크게 적용해 보았습니다. 개발 환경  Windows 10 Pro 64bit Python 3.8.8 64bit, Pycharm 2021.1 PyQt 5.15.3 소스코드 from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QPainter, QFont from PyQt5.QtCore import Qt, QPointF import sys QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True) class Form(QWidget): def __init__(self): super()...

파이썬의 오류처리 방식

이미지
 오늘은 파이썬의 오류처리구문 (Try...) 에 대해 살펴보고자 합니다.  프로그래밍을 하다보면 다양한 오류들을 만나게되는데, 이때 적절한 오류처리구문이 없다면 런타임 (실행시간) 오류 로 이어지게 되고 이는 소프트웨어의 결함 이라 볼 수 있습니다. 특히 상업적인 목적의 코드라면 절대 런타임 오류는 피해야 하겠죠. [이미지 출처 : Pixabay, mohamed hassan ] 정상적인 형변환의 경우 예를 들면 두 수를 입력받아 사칙연산을 수행하는 코드를 아래와 같이 작성하고, x = int( input('Input number:') ) y = int( input('Input number:') ) print(x, '+', y, '=', x + y) print(x, '-', y, '=', x - y) print(x, '*', y, '=', x * y) print(x, '/', y, '=', x / y) 아래와 같이 숫자 를 정상적으로 입력하면 결과는 다음과 같습니다. Input number:5 Input number:2 5 + 2 = 7 5 - 2 = 3 5 * 2 = 10 5 / 2 = 2.5

이 블로그의 인기 게시물

Qt Designer 설치하기

PyQt5 기반 동영상 플레이어앱 만들기