본문 바로가기

Python67

프로젝트03. 도서 관리 프로그램 만들기(intro) 이번에 작성해 볼 프로그램은 도서 관리 프로그램이다. 아직까지 정확히 떠오른 기획은 없지만, 고민하며 하나씩 만들어 볼 예정인데, 큰 고민 없이 시작하는 이유는 판매 목적의 프로그램이 아닌데다가 성능과 속도라는 점을 고려치 않고 기능 구현과 라이브러리 연습에 비중을 두기 때문이다. 당연한 얘기지만 실제 코딩도 중요하지만 기획이나 설계에 많은 시간과 노력을 들여야한다. 1. 장소에 따라 도서관리 프로그램을 만들겠다는 생각을 정하고 목적을 생각하니, 2가지 정도가 떠올랐다. 장소에 따라 사용 목적과 기능이 달라질텐데, 책과 관련된 첫번째 장소가 도서관, 두번째 장소가 서점이었다. 단순히 장소에 따른 기능을 떠올려보면 도서관이라면, 대여가 주목적인만큼, 회원 관리와 책의 위치, 대여 상태에 대한 관리가 이루어.. 2023. 12. 1.
독학 Python tkinter(GUI) - 20. py to exe 로 변환하기 Q. 왜 exe로 변환이 필요할까? 지금까지 포스팅에서 GUI를 만든건 가시성이나 편리성보다는 '프로그램 배포' 라는 목적에 의미를 두었기 때문이다. 다른 사람이 쓸 수 있도록 전달하려함이 가장 큰 목적이었는데, tkinter로 작성하더라도 python이 설치 되어 있지 않으면, .py로 전달해주는 파일은 아무런 의미가 없다. exe 파일로 전환하여 윈도우에서 실행할 수 있도록 전달해줘야 실제 사용자가 어려움 없이 프로그램에 접근할 수 있게된다. .py 파일을 exe로 변환하는 방법은 여러가지가 있지만, 오늘은 간략하게 pyinstaller를 통한 예시를 보여주고 마무리 될 예정이다. 1. pyinstaller 설치하기 - 터미널에서 pip 를 통해 pyinstaller 모듈을 설치한다. - pip in.. 2023. 11. 30.
[python] if __name__ == '__main__' 다른 사람들의 코드를 참고하거나 강의를 보다보면 생각보다 자주 눈에 띄는 코드가 있다. 바로 if __name__ == '__main__' : 과 같은 조건문인데, 내가 하나의 파이썬 파일에서 코드를 작성할 때는 필요가 없지만, 뭔가 모듈화를 하고 내 코드가 점점 복잡해진다면 그때는 꼭 필요한 요소가 된다. (* 모듈화는 무엇이고, 왜 해야하는지는 다음 포스팅에서 다뤄보겠습니다.) 2023.11.28 - [IT 배우기/이것저것] - 모듈화 1(modularity) 모듈화 1(modularity) 오늘의 포스팅 주제는 앞서 예고한 모듈화(modularity)이다. 파이썬이라는 특정 언어에 국한한 것이 아니라 소프트웨어 전체에 해당하는 내용으로 문제 해결을 위한 분석이나 설계, 개발과 유지보 to-all-r.. 2023. 11. 27.
독학 Python tkinter(GUI) - 19.Last piece1(thread) 이제 우리가 원하는 간단한 GUI는 취향에 맞춰 만들 수 있다는 자신감이 생겼을 것이다. 여기까지만 해도 훌륭하지만, 조금 아쉬운 부분이 있다. 아래의 요청사항을 처리하는 코드를 작성하며 문제점과 처리 방법에 대한 고민을 해보자. Request. - 버튼을 누르면 1부터 10까지 1초에 1씩 증가하는 타이머 GUI를 만들어 보세요. 위와 같은 요청사항을 받는다면, 어렵지 않게 시간을 보여줄 수 있는 레이블 또는 엔트리를 하나 만들고 time 라이브러리를 활용해 버튼을 누르면 1초를 기다린 뒤 위에서 생성한 레이블(또는 엔트리)의 값을 변경해주면 되는 간단한 GUI이다. 자신있게 코드를 작성해보면 아래와 크게 다르지 않을 거다. 1. 코드 작성하기 from tkinter import * import tim.. 2023. 11. 22.
python Thread(쓰레드) 병렬처리2(답안) 해당 포스팅은 지난 시간에 진행된 쓰레드에 관련된 문제를 해결하는 포스팅입니다. 2023.11.17 - [Python/Tip & Etc] - python Thread(쓰레드) 병렬처리 1. 문제 다시보기 Question. A선수와 B 선수가 100m 달리기를 한다. 두 선수는 컨디션에 따라 결과를 예측하기 어려운 라이벌로 A 선수는 평균 4~7m/s, B선수는 평균 5~6m/s의 기록을 가지고 있다. 오늘 두 선수의 속도는 최소값과 최대 값 사이의 임의의 정수 값을 가질 때, 결과를 출력하는 코드를 작성해보세요. 결과 풀이에 앞서 지난 포스팅에서는 매서드를 이용한 방법으로 쓰레드를 처리하였는데, 앞선 포스팅과 같이 함수를 사용할 수도 있고, 클래스로도 사용할 수 있다. 오늘은 이 2가지를 모두 살펴보겠다.. 2023. 11. 18.
python Thread(쓰레드) 병렬처리 파이썬은 한줄씩 코드를 처리하는 인터프리터 방식의 프로그래밍 언어이다. 한줄씩 처리한다는 의미대로 해석해보면 2개 이상의 코드를 실행(병렬처리)할 수 없다는 의미인데, 아래 코드를 실행해보면 당연하게도 Start 라는 print 문을 실행한 뒤, 5초 동안의 대기 후 for 문이 실행된다. import time delay_sec = 5 print('Start') time.sleep(delay_sec) print(f'This Delay Time {delay_sec} Second') for i in range(1, 11): print(f'run {i}') time.sleep(1) - 오늘 포스팅은 빨간색과 보라색 영역을 동시에 실행하는 쓰레드(Thread / 병렬처리) 에 대한 포스팅이다. 1. Thread.. 2023. 11. 17.
독학 Python tkinter(GUI) - 18.Menubutton 단순해보이는 메모장만 하더라도 화면뿐 아니라 상단에 메뉴바가 있다. 당연히 우리도 이런걸 할 수 있다. button과 유사한 방법으로 메뉴항목을 만들고, 해당 항목을 선택할 때 특정 기능을 실행할 수 있다. 1. 최상단 메뉴 항목 만들기 - 일단 메모장과 같은 메뉴 항목을 만들고, 실행할 comman는 print문으로 단순히 확인만 진행해보겠다. from tkinter import * root = Tk() root.title('To올라운드의 알찬 GUI 강의') root.geometry("300x500") # 가로 X 세로 / 대문자X 하면 실행안됨 #msb.showinfo('Welcome','안녕하세요. To올라운더와 함께 하는 GUI입니다.') body_frame = Frame(root, relief.. 2023. 11. 16.
독학 Python tkinter(GUI) - 17.progressbar 진행 상태를 알려주는 GUI로 Label 의 값을 계속 변경해 줄 수도 있지만, 좀 더 시각적이고 가시적으로 보여주기위해서는 progressbar를 이용해보는게 좋다. 1. 코드 - 이번에도 tkiner.ttk 라이브러리를 사용한다. - 단순히 Progressbar 객체(위젯)를 생성하는 것은 한두 줄의 코드로 되지만, 우리가 원하는 것처럼 진행하기 위해서는 몇가지 옵션이 필요하다. - 파라미터별 비교를 위해 progressbar1~3을 각각 만들었다. from tkinter import * import tkinter.ttk root = Tk() root.title('To올라운드의 알찬 GUI 강의') root.geometry("300x500") # 가로 X 세로 / 대문자X 하면 실행안됨 #msb.sh.. 2023. 11. 15.
독학 Python tkinter(GUI) - 16.photoimage(+PIL) 사용자 편의를 위한 기능 구현에 초점이 맞춰진 GUI이지만, 지금까지 배운 GUI의 버튼이나 다른 위젯들은 모두 텍스트로 이루어져 뭔가 삭막한 느낌을 가졌을 것이다. 그래서 오늘은 tkinter내에 이미지를 추가할 수 있는 photoimage에 대해 알아보겠다. 1. 준비물 - 오늘은 준비물이 있다. - 바로 GUI에 추가할 이미지 인데, 아무런 이미지를 하나 불러 와도 되고, 만만한 비단뱀 이미지를 다운 받아도된다. - 해당 파일의 이름은 'python.png' 이고 경로는 코드를 작성하는 py 와 같은 경로에 있다. - 경로가 동일하지 않아도 상관없지만 경로가 다르다면 이후 코드에서 해당 경로도 나타내주어야한다. - 준비는 이제 끝났다. 2. 코드 - 코드는 외의로 간단하다. Label을 선언해주고,.. 2023. 11. 14.
독학 Python tkinter(GUI) - 15.Combobox 콤보박스(Combobox)는 드랍다운 형식으로 결과 값이나 텍스트를 목록 형식으로 보여주는 기능을 말한다. 말로는 조금 어려울 수 있지만 콤보박스 또한 사용자가 다른 프로그램을 통해 흔히 봐왔던 기능이고, 단순히 보면 이런 목록 형태로 선택을 하는 기능이다. 1. 코드 - 지난 시간 사용했던 radiobutton도 여러 항목 중 하나를 선택하는 기능을 가지고 있었다. - 그런데, radiobutton을 만들었을 때 적용했던 연령 그룹을 좀 더 세분화하여 나누거나 나이를 입력 받으려하면, radiobutton 보다는 combobox가 더 적합한 기능이 된다. - 내용 비교를 위해 radiobutton과 함께 나타내보겠다. - combobox를 사용하기 위해서는 tkinter.kkt 라이브러리가 필요하다. .. 2023. 11. 13.
반응형