You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 파이썬 gui 만들기 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Toplist.maxfit.vn team, along with other related topics such as: 파이썬 gui 만들기 파이썬 GUI 추천, 파이썬 키오스크 만들기, 파이썬 GUI 예제, 파이썬 GUI 종류, 파이썬 GUI tkinter 예제, 파이썬 GUI 디자인, 파이썬 응용프로그램 만들기, 파이썬 GUI 프로그램
tkinter는 python에서 많이 사용하는 GUI모듈입니다. tkinter는 파이썬에 기본으로 내장되어 있어 따로 설치할 필요 없이 바로 사용이 가능합니다. 창을 생성하고, 버튼, 레이블(텍스트) 등의 위젯을 사용하여 프로그램 제작도 할 수 있습니다.
[python/GUI] tkinter 로 GUI 만들기(기초예제, 단위 변환기 만들기) :: WONA_IN_IT
- Article author: wonhwa.tistory.com
- Reviews from users: 12449 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about [python/GUI] tkinter 로 GUI 만들기(기초예제, 단위 변환기 만들기) :: WONA_IN_IT Updating …
- Most searched keywords: Whether you are looking for [python/GUI] tkinter 로 GUI 만들기(기초예제, 단위 변환기 만들기) :: WONA_IN_IT Updating 안녕하세요! 오늘은 tkinkter를 이용하여 python으로 GUI를 구현해 보도록 하겠습니다 ㅎㅎ 먼저, GUI가 무엇인지 알아보도록 하겠습니다. GUI란? GUI는 Graphic User Interface로, 사용자 그래픽 인터페이스를 말..Everyday Happy day
같이 성장해 나가는 블로그가 되어요 😉 - Table of Contents:
티스토리툴바
PyQt5 Tutorial – 파이썬으로 만드는 나만의 GUI 프로그램 – WikiDocs
- Article author: wikidocs.net
- Reviews from users: 1365 Ratings
- Top rated: 4.6
- Lowest rated: 1
- Summary of article content: Articles about PyQt5 Tutorial – 파이썬으로 만드는 나만의 GUI 프로그램 – WikiDocs PyQt5의 설치부터 시작해서, 간단한 기능들을 익히고, 배포판의 제작까지, 쉬운 예제들로 설명합니다. Windows 환경과 macOS 환경에서 테스트했습니다. …
- Most searched keywords: Whether you are looking for PyQt5 Tutorial – 파이썬으로 만드는 나만의 GUI 프로그램 – WikiDocs PyQt5의 설치부터 시작해서, 간단한 기능들을 익히고, 배포판의 제작까지, 쉬운 예제들로 설명합니다. Windows 환경과 macOS 환경에서 테스트했습니다. 온라인 책을 제작 공유하는 플랫폼 서비스
- Table of Contents:
소개
순서
파이큐티 PyQt5 튜토리얼 1 – 윈도우 창 만들기 – 파이썬 GUI
- Article author: digiconfactory.tistory.com
- Reviews from users: 36743 Ratings
- Top rated: 4.3
- Lowest rated: 1
- Summary of article content: Articles about 파이큐티 PyQt5 튜토리얼 1 – 윈도우 창 만들기 – 파이썬 GUI 파이썬 GUI 파이썬으로 프로그램을 만들다보면 그냥 콘솔 프로그램만으로도 매우 다양한 앱을 구현할 수 있습니다만 배포용 앱을 만들기 위해서는 … …
- Most searched keywords: Whether you are looking for 파이큐티 PyQt5 튜토리얼 1 – 윈도우 창 만들기 – 파이썬 GUI 파이썬 GUI 파이썬으로 프로그램을 만들다보면 그냥 콘솔 프로그램만으로도 매우 다양한 앱을 구현할 수 있습니다만 배포용 앱을 만들기 위해서는 … 파이썬 GUI 파이썬으로 프로그램을 만들다보면 그냥 콘솔 프로그램만으로도 매우 다양한 앱을 구현할 수 있습니다만 배포용 앱을 만들기 위해서는 컴퓨터를 모르는 사람도 쉽게 사용할 수 있도록 GUI 를 만들어 줘..코딩 (파이썬, C언어, 자바) 및 IT정보 블로그
- Table of Contents:
파이큐티 PyQt5 튜토리얼 1 – 윈도우 창 만들기 – 파이썬 GUI
파이썬 GUI
PyQt5
QtWidgets
객체지향방식으로 전환
요약
티스토리툴바
[나도코딩] 파이썬 활용편2 GUI 프로그래밍 – 소개
- Article author: nadocoding.tistory.com
- Reviews from users: 44629 Ratings
- Top rated: 3.5
- Lowest rated: 1
- Summary of article content: Articles about [나도코딩] 파이썬 활용편2 GUI 프로그래밍 – 소개 파이썬 강의/활용편2 – GUI프로그래밍 … 파이썬 진영에는 다양한 GUI 라이브러리가 있어요. … 프로젝트 (이미지 합치기 프로그램 만들기) …
- Most searched keywords: Whether you are looking for [나도코딩] 파이썬 활용편2 GUI 프로그래밍 – 소개 파이썬 강의/활용편2 – GUI프로그래밍 … 파이썬 진영에는 다양한 GUI 라이브러리가 있어요. … 프로젝트 (이미지 합치기 프로그램 만들기) 대학시절 제가 처음으로 배운 언어는 C 였습니다. (아, 꼬꼬마 시절에 GW-BASIC 도 배워보긴 했지만, 논외로 하겠습니다 ㅋ) C를 배우면서 느낀 점은 이랬습니다. 1. 어렵다 2. 어렵다 3. 어렵다..
- Table of Contents:
[파이썬 tkinter GUI 만들기] #3. 화면 만들고 이름,사이즈 설정
- Article author: statools.tistory.com
- Reviews from users: 6198 Ratings
- Top rated: 3.3
- Lowest rated: 1
- Summary of article content: Articles about [파이썬 tkinter GUI 만들기] #3. 화면 만들고 이름,사이즈 설정 tkinter 패키지를 이용해서 윈도우창을 하나 만들어봅시다. tkinter 는 파이썬 내장패키지라 따로 설치할 필요는 없습니다. 아래와 같이 tkinter 를 … …
- Most searched keywords: Whether you are looking for [파이썬 tkinter GUI 만들기] #3. 화면 만들고 이름,사이즈 설정 tkinter 패키지를 이용해서 윈도우창을 하나 만들어봅시다. tkinter 는 파이썬 내장패키지라 따로 설치할 필요는 없습니다. 아래와 같이 tkinter 를 … tkinter 패키지를 이용해서 윈도우창을 하나 만들어봅시다. tkinter 는 파이썬 내장패키지라 따로 설치할 필요는 없습니다. 아래와 같이 tkinter 를 불러옵니다. 참고로 저는 Visual Studio Code 라는 IDE 를 사용..
- Table of Contents:
태그
관련글
댓글0
전체 방문자
최근댓글
태그
티스토리툴바
[파이썬 GUI 프로그래밍] PyQt5 기초_1강.PyQt의 개념과 창 만들기 (창 이름, 사이즈, 변경 및 아이콘 삽입) :: 코딩유치원
- Article author: coding-kindergarten.tistory.com
- Reviews from users: 15834 Ratings
- Top rated: 4.4
- Lowest rated: 1
- Summary of article content: Articles about [파이썬 GUI 프로그래밍] PyQt5 기초_1강.PyQt의 개념과 창 만들기 (창 이름, 사이즈, 변경 및 아이콘 삽입) :: 코딩유치원 나만의 윈도우 만들기. 아래와 같이 아이콘과 창 이름을 넣어주고, 원하는 위치에 원하는 크기로 창을 띄우는 실습을 통해서 PyQt에 대해서 알아 … …
- Most searched keywords: Whether you are looking for [파이썬 GUI 프로그래밍] PyQt5 기초_1강.PyQt의 개념과 창 만들기 (창 이름, 사이즈, 변경 및 아이콘 삽입) :: 코딩유치원 나만의 윈도우 만들기. 아래와 같이 아이콘과 창 이름을 넣어주고, 원하는 위치에 원하는 크기로 창을 띄우는 실습을 통해서 PyQt에 대해서 알아 … 안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용..코딩에 코자도 모르는 비전공자 코린이들을 위한 코딩 블로그
- Table of Contents:
티스토리툴바
[Python] Python GUI Tutorial (GUI 프로그래밍 입문) – PyQt4 + Tkinter
- Article author: swk3169.tistory.com
- Reviews from users: 27720 Ratings
- Top rated: 3.2
- Lowest rated: 1
- Summary of article content: Articles about [Python] Python GUI Tutorial (GUI 프로그래밍 입문) – PyQt4 + Tkinter 파이썬 GUI 프로그래밍. 파이썬에서 데스크탑 프로그램 혹은 GUI 프로그램을 만들기 위해서는 여러 GUI Framework (혹은 Toolkit) 들을 사용할 수 … …
- Most searched keywords: Whether you are looking for [Python] Python GUI Tutorial (GUI 프로그래밍 입문) – PyQt4 + Tkinter 파이썬 GUI 프로그래밍. 파이썬에서 데스크탑 프로그램 혹은 GUI 프로그램을 만들기 위해서는 여러 GUI Framework (혹은 Toolkit) 들을 사용할 수 … 파이썬 GUI 프로그래밍 파이썬에서 데스크탑 프로그램 혹은 GUI 프로그램을 만들기 위해서는 여러 GUI Framework (혹은 Toolkit) 들을 사용할 수 있다. GUI Framework/Toolkit에는 파이썬에서 기본적으로 제공되는..일상, 비즈니스, IT 전공에 대한 기술을 공유합니다.
- Table of Contents:
티스토리 뷰
티스토리툴바
See more articles in the same category here: https://toplist.maxfit.vn/blog/.
[python/GUI] tkinter 로 GUI 만들기(기초예제, 단위 변환기 만들기)
반응형
안녕하세요!
오늘은 tkinkter를 이용하여 python으로 GUI를 구현해 보도록 하겠습니다 ㅎㅎ
먼저, GUI가 무엇인지 알아보도록 하겠습니다.
GUI란?
GUI는 Graphic User Interface로, 사용자 그래픽 인터페이스를 말합니다.
GUI는 컴퓨터 사용시에 유저가 그래픽을 이용하여 상호작용할 수 있도록 도와줍니다.
보통 우리가 컴퓨터로 환경설정을 할 때 뜨는 창, 버튼 등등을 GUI라고 할 수 있습니다.
이런 UI를 사용하면 사용자 입장에서 더 쉽고 직관적으로 컴퓨터를 조작할 수 있습니다.
파이썬에서도 UI를 만들 수 있는데요, tkinter(티케이인터)라는 모듈로 구현이 가능합니다.
Tkinter란?
tkinter는 python에서 많이 사용하는 GUI모듈입니다.
tkinter는 파이썬에 기본으로 내장되어 있어 따로 설치할 필요 없이 바로 사용이 가능합니다.
창을 생성하고, 버튼, 레이블(텍스트) 등의 위젯을 사용하여 프로그램 제작도 할 수 있습니다.
Tkinter를 사용하면 기본적인 UI + 기능 함수를 실행해 프로그램을 만듭니다.
Tkinter로 프로그램 생성시 크게 4단계로 진행이 됩니다.
1. 화면 생성
2. 화면 안에 위치할 UI 및 이벤트함수 생성 및 구성
3. UI 배치
4. 메인루프 실행
예제1: label(레이블) 만들기
그럼 기초예제로 창을 띄워 Hello World!라는 레이블을 출력하는 프로그램을 만들어 보겠습니다.
from tkinter import * # 예제 1) tkinter 파이썬 GUI 레이블(label) # tkinter를 사용하여 텍스트를 나타내보자 # 1. 루트화면 (root window) 생성 tk = Tk() # 2. 텍스트 표시 label = Label(tk,text=’Hello World!’) # 3. 레이블 배치 실행 label.pack() # 4. 메인루프 실행 tk.mainloop()
위의 코드를 실행하면 사진과 같이 Hello World!가 창에 출력 됩니다.
예제2: button(버튼) 만들기
이번에는 Button()을 사용해 버튼을 만들어 보도록 하겠습니다.
그리고 버튼을 누르면 그 버튼의 텍스트가 바뀌는 함수를 추가해 주도록 하겠습니다.
# 예제2) 버튼만들기 tk = Tk() # 함수 정의 (버튼을 누르면 텍스트 내용이 바뀜) def event(): button[‘text’] = ‘버튼 누름!’ button = Button(tk,text=’버튼입니다. 누르면 함수가 실행됩니다.’,command=event) button2 = Button(tk,text=’버튼2 입니다.’) button.pack(side=LEFT,padx=10,pady=10) #side로 배치설정, padx로 좌우 여백설정, pady로 상하 여백설정 button2.pack(side=LEFT, padx=10, pady= 10) tk.mainloop()
기본 화면 버튼 클릭 후 동작 화면
pack()을 사용하여 버튼의 위치 및 여백 등을 설정할 수 있습니다.
또한 해당 button의 command 속성에 미리 만든 함수를 넣으면 클릭 시 해당 함수가 동작 합니다.
버튼의 텍스트를 바꾸고 싶을 때는 text속성에 접근하여 수정하면 반영이 됩니다.
#버튼 텍스트 수정(text속성에 접근하여 수정) button[‘text’] = ‘Button1’ button2[‘text’] = ‘Button2’ tk.mainloop()
예제3: 버튼 Counter 만들기
이번에는 버튼을 누르면 누른 횟수가 label로 표기되고 reset하여 지금까지 클릭한 횟수를 초기화하는 코드를 작성해 보겠습니다.
함수는 2가지를 만들어 사용할 예정인데,
1. 버튼을 누를 때마다 카운트를 세는 함수
2. 버튼을 누르면 카운트가 초기화되는 함수
위의 두 가지 함수를 각각 카운트버튼, 초기화 버튼에 할당하여 프로그램을 만들어보겠습니다.
tk.title()을 사용하여 창의 이름을 설정할 수 있고,
라벨 및 버튼의 속성 (fg, bg, width, font) 들로 글자 색, 배경색, 너비, 폰트크기 등을 지정할 수 있습니다.
# 예제 3) 버튼 클릭시 실행될 이벤트(함수) 설정 tk = Tk() # 다른 함수 정의(버튼 누를때마다 카운트를 세는 함수) counter = 0 def clicked(): global counter #전역변수 counter counter += 1 label1[‘text’] = ‘버튼 클릭 수: ‘ + str(counter) # 리셋 함수(카운트 초기화) def reset(): global counter counter = 0 label1[‘text’] = ‘옆에 버튼이 있습니다.’ ## GUI 구성(텍스트,버튼) ## # 창 이름 설정 tk.title(‘GUI예제’) # 텍스트 label1=Label(tk, text=’옆에 버튼이 있습니다.’,fg=’blue’,font=20) # fg는 글자 색 지정, font로 글자 설정 label1.pack(side=LEFT, padx=10, pady=10) # 버튼1 button3 = Button(tk,text=’클릭해 보세요.’,bg=’green’,font=15,width=30,height=5,command= clicked) #command로 버튼 클릭 시 동작할 함수 지정, bg로 색상지정, width,height로 각각 넓이 높이 지정 button3.pack(side=LEFT, padx=10, pady=10) # 버튼2 button4 = Button(tk,text=’reset’,bg=’red’,width=30,height=5,font=15,command=reset) button4.pack(side=LEFT,padx=10, pady=10) tk.mainloop()
기본화면 초록 버튼을 눌렀을 때(카운팅) 빨강 버튼을 눌렀을 때(초기화)
위와 같이 각각의 버튼이 잘 실행됨을 확인할 수 있습니다.
예제4: 길이 단위 변환기(ft, cm)
마지막 예제로, 입력값을 받아 각각 ft와 cm로 변환할 수 있는 프로그램을 만들어 보겠습니다.
함수는 각각
1. ft를 cm로 변환하는 함수
2. cm를 ft로 변환하는 함수
이렇게 2가지를 사용하여 entry를 사용해 사용자로부터 입력값을 받아 변환하는 UI를 만들어 줍니다.
함수를 만들때 1ft(피트) = 30.48cm 임을 참고하여 코드를 작성합니다.
entry는 input함수처럼 유저로부터 값을 입력받을 수 있는 tkinter 함수 입니다.
insert()를 사용하여 입력창에 글자를 입력할 수 있고,
get()을 사용하여 입력 내용을 가져올 수 있으며,
delete()를 사용하면 입력창 내용 삭제가 가능합니다.
.grid()는 pack처럼 버튼, 레이블 등의 위젯을 위치시켜 주는 역할을 합니다.
행(row)과 열(column)으로 위젯의 위치를 지정하여 줍니다.
###예제4) ft -> cm로 바꾸는 단위 변환기 만들기 # Entry: input과 비슷한 역할 (사용자가 입력한 내용 전달) # get: Entry를 사용한 입력 내용 가져올 수 있다. # delete: 사용자 입력 삭제 # Frame: 컨테이너, 창 안에 프레임 생성 # grid: 격자 배치 tk = Tk() tk.title(‘길이 변환기’) def Ft2Cm(): ft2cm = entry1.get() entry2.delete(0,”end”) entry2.insert(0,round(float(ft2cm)*30.48,4)) def Cm2Ft(): cm2ft = entry2.get() entry1.delete(0,”end”) entry1.insert(0,round(float(cm2ft)/30.48,4)) label1 = Label(tk,text=’피트(ft)’).grid(row=0, column=0) label2 = Label(tk,text=’센티미터(cm)’).grid(row=1,column=0) # 각 단위 입력받는 부분 만들기 entry1 = Entry(tk) entry2 = Entry(tk) entry1.grid(row=0,column=1) entry2.grid(row=1,column=1) btn1 = Button(tk,text=’ft->cm’,bg=’black’,fg=’white’,command=Ft2Cm).grid(row=2,column=0) btn2 = Button(tk,text=’cm->ft’,bg=’black’,fg=’white’,command=Cm2Ft).grid(row=2,column=1) tk.mainloop()
ft를 cm로 변환했을 때 cm를 ft로 변환했을 때
이렇게 각각 필요한 단위로 변환할 수 있습니다.
전체 코드
from tkinter import * # 예제 1) tkinter 파이썬 GUI 레이블(label) # tkinter를 사용하여 텍스트를 나타내보자 # 1. 루트화면 (root window) 생성 tk = Tk() # 2. 텍스트 표시 label = Label(tk,text=’Hello World!’) # 3. 레이블 배치 실행 label.pack() # 4. 메인루프 실행 tk.mainloop() # 예제2) 버튼만들기 tk = Tk() # 함수 정의 (버튼을 누르면 텍스트 내용이 바뀜) def event(): button[‘text’] = ‘버튼 누름!’ button = Button(tk,text=’버튼입니다. 누르면 함수가 실행됩니다.’,command=event) button2 = Button(tk,text=’버튼2 입니다.’) button.pack(side=LEFT,padx=10,pady=10) #side로 배치설정, padx로 좌우 여백설정, pady로 상하 여백설정 button2.pack(side=LEFT, padx=10, pady= 10) #tk.mainloop() #버튼 텍스트 수정(text속성에 접근하여 수정) button[‘text’] = ‘Button1’ button2[‘text’] = ‘Button2’ tk.mainloop() # 예제 3) 버튼 클릭시 실행될 이벤트(함수) 설정 tk = Tk() # 다른 함수 정의(버튼 누를때마다 카운트를 세는 함수) counter = 0 def clicked(): global counter #전역변수 counter counter += 1 label1[‘text’] = ‘버튼 클릭 수: ‘ + str(counter) # 리셋 함수(카운트 초기화) def reset(): global counter counter = 0 label1[‘text’] = ‘옆에 버튼이 있습니다.’ ## GUI 구성(텍스트,버튼) ## # 창 이름 설정 tk.title(‘GUI예제’) # 텍스트 label1=Label(tk, text=’옆에 버튼이 있습니다.’,fg=’blue’,font=20) # fg는 글자 색 지정, font로 글자 설정 label1.pack(side=LEFT, padx=10, pady=10) # 버튼1 button3 = Button(tk,text=’클릭해 보세요.’,bg=’green’,font=15,width=30,height=5,command= clicked) #command로 버튼 클릭 시 동작할 함수 지정, bg로 색상지정, width,height로 각각 넓이 높이 지정 button3.pack(side=LEFT, padx=10, pady=10) # 버튼2 button4 = Button(tk,text=’reset’,bg=’red’,width=30,height=5,font=15,command=reset) button4.pack(side=LEFT,padx=10, pady=10) tk.mainloop() ###예제4) ft -> cm로 바꾸는 단위 변환기 만들기 # Entry: input과 비슷한 역할 (사용자가 입력한 내용 전달) # get: Entry를 사용한 입력 내용 가져올 수 있다. # delete: 사용자 입력 삭제 # Frame: 컨테이너, 창 안에 프레임 생성 # grid: 격자 배치 tk = Tk() tk.title(‘길이 변환기’) def Ft2Cm(): ft2cm = entry1.get() entry2.delete(0,”end”) entry2.insert(0,round(float(ft2cm)*30.48,4)) def Cm2Ft(): cm2ft = entry2.get() entry1.delete(0,”end”) entry1.insert(0,round(float(cm2ft)/30.48,4)) label1 = Label(tk,text=’피트(ft)’).grid(row=0, column=0) label2 = Label(tk,text=’센티미터(cm)’).grid(row=1,column=0) # 각 단위 입력받는 부분 만들기 entry1 = Entry(tk) entry2 = Entry(tk) entry1.grid(row=0,column=1) entry2.grid(row=1,column=1) btn1 = Button(tk,text=’ft->cm’,bg=’black’,fg=’white’,command=Ft2Cm).grid(row=2,column=0) btn2 = Button(tk,text=’cm->ft’,bg=’black’,fg=’white’,command=Cm2Ft).grid(row=2,column=1) tk.mainloop()
코드 파일
pythonGUI_ex.py 0.00MB
마무리
이렇게 간단하게 파이썬으로 GUI를 만들어 보았습니다.
단위 변환도 쉽게 만들어 사용할 수 있어서 재밌네요 🙂
개인적으로 예전에 대학 교양수업에서 배웠던 비주얼 베이직이 생각나네요 ㅎㅎ
tkinter로 만들어 보고 싶은 다른 프로그램이 있다면 댓글 남겨주세요!
반응형
PyQt5 Tutorial – 파이썬으로 만드는 나만의 GUI 프로그램
소개
한국어로 되어있는 PyQt5 자료가 많지 않아서 아래의 여러 튜토리얼과 강의의 예제를 정리하며 시작했습니다.
PyQt5의 설치 부터 시작해서, 간단한 기능 들을 익히고, 배포판의 제작 까지, 쉬운 예제 들로 설명합니다.
부터 시작해서, 들을 익히고, 까지, 들로 설명합니다. Windows 환경과 macOS 환경에서 테스트했습니다.
온라인 서점 구입 예스24: 바로가기 알라딘: 바로가기 인터파크: 바로가기 교보문고: 바로가기 영풍문고 전자책 (리딩락): 바로가기
다른 책 Matplotlib Tutorial – 파이썬으로 데이터 시각화하기
순서
01. 소개 (Introduction) – Python과 PyQt5에 대해 간략하게 설명합니다.
02. 설치 (Installation) – 개발 환경 구성을 위해 파이참과 아나콘다를 설치합니다.
03. 기초 (Basics) – GUI 프로그램의 기본 기능에 대해 알아봅니다.
04. 레이아웃 (Layout) – 구성 요소를 배치하는 방법에 대해 알아봅니다.
05. 위젯 (Widget) – 유용하게 사용할 수 있는 다양한 위젯들을 알아봅니다.
06. 다이얼로그 (Dialog) – 사용자가 프로그램과 상호작용하는 방식에 대해 알아봅니다.
07. 시그널과 슬롯 (Signal & Slot) – PyQt5에서의 이벤트 처리에 대해 알아봅니다.
08. 그림 그리기 (Painting) – PyQt5의 다양한 그림 그리기 기능을 활용합니다.
09. 실행파일 만들기 (PyInstaller) – 작성한 프로그램을 실행파일로 만들어봅니다.
참고한 튜토리얼과 강의
파이큐티 PyQt5 튜토리얼 1
반응형
파이썬 GUI
파이썬으로 프로그램을 만들다보면
그냥 콘솔 프로그램만으로도
매우 다양한 앱을 구현할 수 있습니다만
배포용 앱을 만들기 위해서는
컴퓨터를 모르는 사람도
쉽게 사용할 수 있도록
GUI 를 만들어 줘야 하는데요.
GUI를 처음부터 만들 수도 있겠지만
그건 시스템 프로그래밍이 필요해서
쉽지 않은 부분이고요.
애플리케이션 개발자들은 GUI 모듈이라는
인터페이스(interace)를 사용합니다.
GUI는 콘솔앱과 달라서 이벤트 처리라는
틀안에서 프로그래밍을 해야 합니다.
GUI 프레임워크라고 부르는 것은
Framework 의 뜻이 틀이라는 건데요.
유저가 그래픽적으로 컨트롤 하는 부분은
그 Framework – 틀에 맞춰서 작성해야 합니다.
파이썬 GUI Framework 에는 많은 옵션이 있습니다.
첫번째는 tkinter (tool kit interface 의 약자)로
파이썬의 기본 패키지에 GUI로 등록되 있습니다.
tkinter 는 tcl/tk라는 좀 오래된 오픈 소스 프로젝트의
Wrapper – 래퍼(다른 언어에서 재사용 하는 것) 로써
GUI 프로그래밍을 처음 학습하는 사람들이나
또는 빠른 속도로 프로토타입을 만들 때도 유용합니다.
좀 허접하다고 말할 수도 있겠지만
쉽고 간단한 프레임워크로
많은 사람들에게 사랑을 받고 있습니다.
tkinter 말고는 여러가지가 있습니다.
pyGTK, wxPython, Kivy, PyGUI 등
역시 다양한 오픈소스 프로젝트를
가진 파이썬 답게 선택할 수 있는 옵션이 많은데요.
이 포스팅에서 시리즈로 집중하려고 하는 것은
PyQt5 입니다. 이는 C++ 용 Qt의 파이썬 바인딩입니다.
(바인딩 -binding C++ 네이티브 코드를
파이썬에서 사용할 수 있도록 해주는 API)
파이썬의 많은 GUI 프로젝트 중에서
수천개의 위젯 클래스와
PyQpenQL같은 그래픽 인터페이스도 제공하는
PyQt5가 가장 강력하다고 볼 수 있습니다.
단 PyQt5 상업용 개발을 위한 라이센스는
riverbank computing에 별도로 납부해야 합니다.
(1년간 개발자 당 미화 550달러 수준)
상업용 앱을 개발하려는 분들은
개발사의 라이센스 정책을 잘 읽어 보시길 바랍니다.
오픈소스 프로젝트라고
모두가 공짜는 아닙니다.
개발사가 업데이트와 기술지원을 하고 있다면
상업용 개발자들의 경우 돈을 내야 합니다.
(자바도 오라클 API는 돈을 내야합니다)
PyQt5
PyQt5같은 바인딩이 좋은 것은
속도가 빠른 C++ 코드를 실행시키는 부분입니다.
파이썬은 뭐 C++에 비하면
엄청 느린 로직을 가지고 있습니다.
실행시간을 중시하는 스크립트 언어의
특성이라고 할 수 있는데요.
기계어 코드를 컴파일 하지 않고
즉석에서 기계어를 번역 하다보니
아무래도 C++ 같은 정적인 언어들 보다
느려질 수밖에 없는데요.
모든 것을 파이썬 코드로 바꾸지 않고
이미 컴파일되있는 C++ 코드와 라이브러리를
실행시키는 방식으로 속도 문제를 보완할 수 있습니다.
실제 연산이 많이 필요한 AI나 빅데이터 처리 등은
파이썬 코드가 아니라 C++을 컴파일한
기계어를 사용하는 경우가 많습니다.
이것은 매우 쉬운 파이썬 코드로
복잡한 C++ 코드를 돌리는 것과 같습니다.
위에서 콘트롤은 파이썬으로 쉽게 하고
아래의 동작들은 C++이 효율적으로 한다.
각 언어의 장점만 사용하는 하이브리드(짬뽕) 개념입니다.
그럼 PyQt5의 성능과 장점을 알았으니
바로 예제를 시작해 보겠습니다.
PyQt5설치
외부 패키지이므로 pip 로 설치합니다.
pip install pyqt5
QtWidgets
PyQt5에서는 QtWidget 이나 QMainWindow 등을
사용해서 윈도우 창을 만들 수 있습니다.
많은 프로젝트들이 시간에 걸쳐서
진화하다 보면 어떤 클래스들은
지원이 중단되기도 하고(deprecated)
새로운 클래스가 도입되기도 합니다.
따라서 윈도우창 하나 만드는데도
여러가지 클래스를 사용하도록
허용하는 경우도 있습니다.
처음 학습시에는 표준적인 방법으로
GUI 를 만들다가 어느정도 익숙해지면
본인의 입맛에 맞는 스타일로 GUI를 설계하면 됩니다.
여기서는 QtWidgets 인스턴스를 사용합니다.
위짓(Widgets) 이라는 것은 눈에 보이는
콘트롤 요소를 말합니다.
예를 들어 윈도우 버튼, 레이블, 체크박스 등은
모두 위짓입니다.
윈도우의 프레임도 위짓입니다.
이들은 대부분 비슷한 속성을 공유하므로
비슷한 그룹의 요소들이 상속관계를 가집니다.
하다보면 자꾸 반복된다는 것을 느낄 겁니다.
다음은 PyQt5 윈도우 창을 만드는 코드입니다.
from PyQt5 import QtWidgets import sys if __name__ == “__main__”: app = QtWidgets.QApplication(sys.argv) myWin = QtWidgets.QWidget() myWin.show() app.exec_()
위의 코드는 가장 기본적인 구조를 보여줍니다.
일단 여기가 기본 시작점으로 생각하면 됩니다.
이 형식을 지키면서 앱을 만들 겁니다.
PyQt5 GUI
QWidget은 아무 설정도 하지 않은
기본 윈도우를 생성하는 클래스입니다.
QApplication 인스턴스는 하나의 윈도우를
생성합니다.
exec_() 를 실행시키면 윈도우는
윈도우 루프라는 상태에 들어가는데
여기서부터 이벤트 처리가 가능합니다.
QWidget은 다른 컨트롤 요소들의 base로
QWidget의 메소드들을 상속 받습니다.
(버튼, 레이블 같은 것도 작은 윈도우 객체로 볼 수 있음)
QWidget Class | Qt Widgets 5.15.4
객체지향방식으로 전환
윈도우 프로그래밍은 객체지향프로그래밍에
적합합니다.
GUI 의 콘트롤 요소들은 객체이며
이벤트 루프에서 이벤트 자체도
객체입니다.
그래서 절차형 프로그래밍 방식이 아니라
객체지향 프로그래밍 코드로 바꾸어 보겠습니다.
from PyQt5 import QtWidgets import sys class myFirstWindow(QtWidgets.QWidget): def __init__(self): super(myFirstWindow,self).__init__() self.setGeometry(300, 300, 320, 240) self.setWindowTitle(‘My First Window’) self.show() if __name__ == “__main__”: app = QtWidgets.QApplication(sys.argv) myWin = myFirstWindow() app.exec_()
우선 myFirstWindow 라는 클래스에
QWidget 을 상속받아서
그 안에서 필요한 모든 초기화를 시켜줍니다.
속성들도 바꿔보겠습니다. ssetGeometry 처럼
자기 스스로 설명하는 메소드입니다.
요런 코드들은 프로그램의 로직이라기 보다는
설정값에 가깝습니다.
GUI 프로그래밍을 하면서
여러가지의 설정을 하게되는데요.
결국 윈도우 창이란 것은 틀이란게
정해져 있습니다.
PC나 스마트폰이나 맥북이나
화면 사이즈나 터치등에 각 시스템의
특성에 따른 설정값이 존재할 뿐입니다.
이벤트 처리에 관해서는
거의 정해져 있으니까요.
(마우스 버튼클릭, 터치, 드래그 등)
윈도우 앱
PyQt5나 tkinter 나 비슷합니다.
JavaFX나 kivy 처럼 xml 을 사용하는 방식을 보면
요새는 약간 웹개발과 닮은 느낌의 GUI도 있는데요.
레이아웃, 디자인 이런 것은
거의 비슷하다고 보면 됩니다.
레이블과 버튼 – 객체지향
PyQt5의 레이블은 QLabel 이며
버튼은 QPushButton 클래스입니다.
객체 지향 방식에 따라 클래스로 정의해보겠습니다.
버튼과 레이블 클래스를 상속받아서 사용합니다.
둘다 텍스트라는 특성이 있으므로
문자열과 그 요소를 넣을 프레임(윈도우)만
있으면 생성할 수 있습니다.
from PyQt5 import QtWidgets import sys class myFirstWindow(QtWidgets.QWidget): def __init__(self): super(myFirstWindow, self).__init__() self.btn2 = basicButton(self, “my Button”) self.label1 = basicLabel(self, “my Label”) self.setup() def setup(self): self.setGeometry(300, 300, 320, 240) self.setWindowTitle(‘My First Window’) self.setToolTip(“This is the PyQt5”) self.btn2.move(100, 100) self.show() class basicButton(QtWidgets.QPushButton): def __init__(self, frame, text): QtWidgets.QPushButton.__init__(self, frame) self.setText(text) self.move(50, 50) class basicLabel(QtWidgets.QLabel): def __init__(self, frame, text): QtWidgets.QLabel.__init__(self, frame) self.setText(text) self.move(20, 20) if __name__ == “__main__”: app = QtWidgets.QApplication(sys.argv) myWin = myFirstWindow() app.exec_()
클래스를 사용하지 않는게
코드의 개수는 줄어들겠지만
이렇게 객체를 생성하면
자신이 만든 객체이므로
잘 잊어버리지 않습니다.
원래 객체 지향 프로그래밍이
코드가 길어집니다.
자바의 경우 뭐 간단한 프로그래밍
하나 작성하는데도 코드가 엄청 길죠.
이는 프로그래머마다 호불호가 있을 수 있습니다.
보통적으로는 코드의 양이 길어질때
위력을 발휘하는게 객체지향 코드입니다.
파이썬으로 간단한 프로그램을 만들더라도
코드 1000줄 정도는 사용한다고 생각하면
그리 나쁜 방법은 아닙니다.
어떤 사람들은 객체지향 코드가 쓸데없이
길어지는게 불편하다는 사람도 있지만
어쨋든 현재까지 가장 검증된 방식이고
또 파이썬은 자바 등에 비하면
코드가 거의 간단하기 때문에
가급적 클래스 사용법에 익숙해지는게 좋습니다.
(파이썬도 객체지향 프로그래밍 언어입니다)
QPushButton QLabel
요약
PyQt5의 윈도우 창을 생성하고
레이블과 버튼까지 생성해봤습니다.
다음 포스팅에서는 버튼을 클릭했을 때
이벤트를 처리하는 방법 등에 대해서 알아보겠습니다.
728×90
So you have finished reading the 파이썬 gui 만들기 topic article, if you find this article useful, please share it. Thank you very much. See more: 파이썬 GUI 추천, 파이썬 키오스크 만들기, 파이썬 GUI 예제, 파이썬 GUI 종류, 파이썬 GUI tkinter 예제, 파이썬 GUI 디자인, 파이썬 응용프로그램 만들기, 파이썬 GUI 프로그램