상세 컨텐츠

본문 제목

[Python 파이썬 독학 활용2편 2일차] GUI(tkinter) - 2-2

파이썬 스터디/파이썬-Python 활용편2

by 후즈테크 2021. 8. 1. 12:26

본문

반응형

13. 메시지 박스 

import tkinter.messagebox as msgbox
from tkinter import *

root = Tk()

root.title("WT GUI")
root.geometry("640x480") # 가로 X 세로 / 대문자X 하면 실행안됨

# 기차 예매 시스템 이라고 가정
def info():
    msgbox.showinfo("알림", "정상적으로 예매 완료 되었습니다.")


def warn():
    msgbox.showwarning("경고", "해당 좌석은 매진되었습니다.")

def error():
    msgbox.showerror("에러","결제 오류가 발생했습니다.")


def okcancel():
    msgbox.askokcancel("확인 / 취소", "해당 좌석은 유아 동반석입니다. 예매하시겠습니까?")


def retrycancel():
    msgbox.askretrycancel("재시도 / 취소", "일시적인 오류입니다. 다시 시도하시겠습니까?")

def yesno():
    msgbox.askyesno("예 / 아니오", "해당 좌석은 역방향입니다. 예매하시겠습니까?")

def yesnocancel():
    response = msgbox.askyesnocancel(title=None, message="예매 내역이 저장되지 않았습니다.\n저장 후 프로그램을 저장하시겠습니까?")
    # 네 : 저장 후 종료
    # 아니오 : 저장하지 않고 종료
    # 취소 : 프로그램 종료 취소 (현재화면에서 계속 작업)

    print("응답 : ", response)
    if response == 1:
        print("예")
    elif response == 0:
        print("아니오")
    else:
        print("취소")

Button(root, command=info, text="알림").pack()
Button(root, command=warn, text="경고").pack()
Button(root, command=error, text="에러").pack()

Button(root, command=okcancel, text="확인 / 취소").pack()
Button(root, command=retrycancel, text="재시도 취소").pack()

Button(root, command=yesno, text="예 아니오").pack()
Button(root, command=yesnocancel, text="예 아니오 취소").pack()




root. mainloop()

 

주의사항

 - import tkinter.messagebox as msgbox

    : 별도로 messagebox 모듈 import 진행

- messagebox 의 속성에 따라 나타나는 알림창의 상태 표시(녹색)가 다름.

  : 사용자의 선택 없이 알림만 전달( info / warinig / error )

 

- messagebox 의 속성에 따라 나타나는 알림창의 상태 표시(녹색)가 다름.

  : 사용자의 선택을 할 수 있음. 선택에 따라 결과 값 전달 가능( okcancel / retrycancel / yesno / yesnocancel )

반응형

 - response = msgbox.askyesnocancel(title=None, message="예매 내역이 ~ 저장하시겠습니까?")

    : 해당 값을 변수(response)로 저장하여 해당 값을 반환 할 수 있음.

    : '예(Y)' 를 선택할 경우, 해당 값이 response 값으로 저장되며 출력 시 Bool(True) 도는 상태 =1로 출력됨

    : 예 = True, 1 / 아니오 = False , 0 / 취소 = None

 

 

14. frame

from tkinter import *

root = Tk()

root.title("WT GUI")
root.geometry("640x480") # 가로 X 세로 / 대문자X 하면 실행안됨

Label(root, text="메뉴를 선택해주세요").pack(side="top")
Button(root, text="주문하기").pack(side="bottom")

#메뉴 프레임
frame_burger = Frame(root, relief="solid", bd =1 ) #relief = 외곽선 
frame_burger.pack(side="left", fill="both", expand=True)

Button(frame_burger, text = "햄버거").pack()
Button(frame_burger, text = "치즈햄버거").pack()
Button(frame_burger, text = "치킨햄버거").pack()


#음료 프레임
frame_drink = LabelFrame(root, text="음료" )
frame_drink.pack(side="right", fill="both", expand=True)
Button(frame_drink, text = "콜라").pack()
Button(frame_drink, text = "사이다").pack()




root. mainloop()

주의사항

 - Label(root, text="메뉴를 선택해주세요").pack(side="top")
 - Button(root, text="주문하기").pack(side="bottom")

 - frame_burger.pack(side="left")

 - frame_drink.pack(side="right")

    : Label, Button의 pack 파라미터 중 side 의 위치를 설정 할 경우 해당 위치로 표기 가능

 

 - frame_burger = Frame(root, relief="solid", bd =1 ) 

    : relief = 외곽선 표시(solid = 실선)

 

보기 좋게 만드는게 마냥 쉽지만은 않다..ㅜㅠ

반응형

관련글 더보기

댓글 영역