강의/python3

[project] 2강. GUI 기본 개발

jinkwon.kim 2022. 5. 28. 21:21
728x90
반응형

목표 

python에서 제공하는 gui 개발 툴인 tkinter에 대하여 알아 보겠습니다 

강의

....

tkinter란?

1. 요약

    GUI(graphical user interface)를 개발하기 위한 tool 입니다.

Tkinter는 파이썬에 기본 내장되어 있기 때문에 별도로 설치할 필요가 없습니다.

 

2. 상세

    Tkinter는 Tcl/Tk에 대한 파이썬 Wrapper로서 Tcl/Tk를 파이썬에 사용할 수 있도록 한 Lightweight GUI 모듈이다. Tcl은 Tool Command Language의 약자로서 일종의 프로그래밍 언어이며, Tk는 크로스 플랫폼에 사용되는 일종의 GUI 툴킷이다. Tkinter는 타 GUI 프레임워크나 툴킷에 비해 지원되는 위젯들이 부족하고 UI도 그렇게 예쁘지 않다는 단점이 있지만, Python 설치시 기본적으로 내장되어 있는 파이썬 표준 라이브러리이기 때문에 쉽고 간단한 GUI 프로그램을 만들 때 활용될 수 있습니다.

tkinter 구현 단위 

1. 위젯

    tkinter에서는 Label, Entry, Label, Frame, Button등을 위젯이라는 용어를 사용하여 지칭 하고 있습니다. 

tkinter 기본 구조

from tkinter import *  # tkinter library 사용 선언

win = Tk()  # tkinter 객체 생성
win.geometry("500x500")  # 화면 크기 설정
win.title("tk_gui")  # 화면 이름 설정

"""
각종 위젯과 위젯이 사용할 함수를 구현 합니다.
"""

win.mainloop()  # tkinter 실행

위젯 예제 코드

https://076923.github.io/posts/Python-tkinter-1/

 

Python tkinter 강좌 : 제 1강 - GUI 생성

tkinter

076923.github.io

최종 예제 코드 

from tkinter import *

root = Tk()  # tkinter 객체 생성
root.geometry("500x200+500+300")  # 화면 크기 설정 (가로x제로+x좌표+y좌표)
root.title("tk_gui")  # 화면 이름 설정
root.resizable(True, True)  # 너비 ,높이 변경 가능 여부 설정


# 메뉴 만들기
menu = Menu(root)
menu_file = Menu(menu, tearoff=0)
menu_file.add_command(label="New Text File")
menu_file.add_command(label="New File")
menu_file.add_command(label="New rootdow")
menu_file.add_separator()
menu_file.add_command(label="open file")
menu_file.add_command(label="Exit", command=root.quit)
menu.add_cascade(label="File", menu=menu_file)

edit_file = Menu(menu, tearoff=0)
edit_file.add_radiobutton(label="Undo")
edit_file.add_radiobutton(label="Redo")
menu.add_cascade(label="Edit", menu=edit_file)
root.config(menu=menu)

# frame 만들기
# top  frame
top_frame = Frame(root)
top_frame.pack(side="top")
# top frame 구성
top_bt_trading_start = Button(
    top_frame, padx=5, pady=5, width=12, text="트레이딩 시작")
top_bt_trading_end = Button(
    top_frame, padx=5, pady=5, width=12, text="트레이딩 종료")
top_bt_trading_start.pack(side="left")
top_bt_trading_end.pack(side="right")

# frame 만들기
# price  frame
top1_frame = Frame(root, relief="solid", bd=1)
top1_frame.pack(side="top", expand=True)
# price frame 구성
top_bt_bitcoin_price = Button(
    top1_frame, padx=5, pady=5, width=20, text="비트코인 가격 : {} ".format("100,000"))
top_bt_ether_price = Button(
    top1_frame, padx=5, pady=5, width=20, text="비트코인 가격 : {}".format("100,000"))
top_bt_bitcoin_price.pack(side="left", padx=10)
top_bt_ether_price.pack(side="right", padx=10)


# left  frame
left_frame = Frame(root, relief="solid", bd=1)
left_frame.pack(side="left", fill="both")

# left frame 구성
# 익절
left_lb_take_profit = Label(left_frame, text="익절%")
left_et_take_profit = Entry(left_frame, width=12)
left_lb_take_profit.grid(row=0, column=0)
left_et_take_profit.grid(row=0, column=1)

# 손절
left_lb_stop_loss = Label(left_frame, text="손절%")
left_et_stop_loss = Entry(left_frame, width=12)
left_lb_stop_loss.grid(row=1, column=0)
left_et_stop_loss.grid(row=1, column=1)

# 시장가 매수
left_bt_market_buy = Button(left_frame, text="시장가 매수")
left_bt_market_buy.grid(row=2, column=0)
# 시장가 매도
left_bt_market_sell = Button(left_frame, text="시장가 매도")
left_bt_market_sell.grid(row=3, column=0)

# 지정가 매수
left_bt_pending_buy = Button(left_frame, text="지정가 매수")
left_bt_pending_buy.grid(row=4, column=0)

# 지정가 매도
left_bt_pending_sell = Button(left_frame, text="지정가 매도")
left_bt_pending_sell.grid(row=5, column=0)

# right  frame
right_frame = Frame(root, relief="solid", bd=1)
right_frame.pack(side="right", fill="both", expand=True)

# right frame 구성
# 익절 값
bt_profit = Label(right_frame, text="수익 률 : 100%")
bt_profit.pack(side="left", padx=30)
#
bt_total_profit = Label(right_frame, text="전체 수익률 : 200%")
bt_total_profit.pack(side="right", padx=10)
"""
각종 위젯과 위젯이 사용할 함수를 구현 합니다.
"""

root.mainloop()  # tkinter 실행

참조 자료

https://www.youtube.com/watch?v=HbptDiBNPR4&list=PLZOm4uzWk9WPwJybXDR6WJzj9VWyflmyt&ab_channel=%EC%B4%88%EB%B3%B4%EC%BD%94%EB%94%A9 

https://www.youtube.com/watch?v=bKPIcoou9N8&ab_channel=%EB%82%98%EB%8F%84%EC%BD%94%EB%94%A9 

 

728x90
반응형