250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 딥러닝
- Computer Vision
- Deep Learning
- Tkinter
- 파이썬
- 그래픽 유저 인터페이스
- POD
- 장고
- FLASK
- 논문 리뷰
- 텐서플로우
- MariaDB
- tensorflow
- pytorch
- 데이터베이스
- GUI
- numpy
- Django
- kubernetes
- paper review
- OpenCV
- Web Programming
- vue.js
- 웹 프로그래밍
- yaml
- 컴퓨터 비전
- 파이토치
- Python
- k8s
- Docker
Archives
- Today
- Total
Maxima's Lab
[Python, Tkinter] Graphic User Interface (GUI) - 버튼을 이용한 윈도우 창 생성 및 닫기 본문
Python/GUI (Graphic User Interface)
[Python, Tkinter] Graphic User Interface (GUI) - 버튼을 이용한 윈도우 창 생성 및 닫기
Minima 2022. 7. 18. 23:15728x90
SMALL
안녕하세요, 오늘은 Tkinter 모듈을 사용하여, GUI 중 버튼을 이용하여 윈도우 창을 생성 및 닫는 방법에 대해서 알아보겠습니다.
다음과 같은 과정을 통해 1개의 윈도우 창을 기준으로 새로운 윈도우 창을 생성 및 닫는 코드를 구현해보겠습니다.
- 최초 Window(윈도우) 창을 생성하며, 해당 윈도우 창은 Frame-1, Frame-2와 같이 2개의 Frame으로 구성합니다.
- Frame-2를 기준으로 New Window가 생성되지 않은 상태에서는 Red, 생성된 상태에서는 Green으로 Background Color를 설정합니다.
- Frame-1 내부에 2개의 Button(버튼)을 사용하여, New Window와 Destroy New Window 기능을 적용합니다.
from tkinter import *
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
new_win = None
frame_1 = Frame(win, relief="solid", bd=10)
frame_2 = Frame(win, relief="solid", bd=10)
frame_2.config(bg='red')
label_1 = Label(frame_1, text='Frame-1')
label_2 = Label(frame_2, text='Frame-2')
label_1.pack(); label_2.pack()
def new_window():
global new_win
frame_2.config(bg='green')
new_win = Tk()
new_win.title("Maxima_2")
new_win.geometry("800x600+1000+200")
new_win.resizable(False, False)
new_win.mainloop()
def destroy_new_window():
global new_win
frame_2.config(bg='red')
new_win.destroy()
button_1 = Button(frame_1, text="New Window", height=10, command=new_window)
button_2 = Button(frame_1, text="Destroy New Window", height=10, command=destroy_new_window)
button_2.pack(side="bottom", fill="x", expand=True)
button_1.pack(side="bottom", fill="x", expand=True)
frame_1.pack(side="left", fill="both", expand=True, padx=5, pady=5)
frame_2.pack(side="left", fill="both", expand=True, padx=5, pady=5)
win.mainloop()
위의 그림은 해당 코드를 실행하였을 때의 Window(윈도우) 창 생성 초기 화면입니다. 다음은, 위의 코드를 세부적으로 살펴보겠습니다.
from tkinter import *
win = Tk()
win.title("Maxima")
win.geometry("800x600+200+200")
win.resizable(False, False)
new_win = None
frame_1 = Frame(win, relief="solid", bd=10)
frame_2 = Frame(win, relief="solid", bd=10)
frame_2.config(bg='red')
label_1 = Label(frame_1, text='Frame-1')
label_2 = Label(frame_2, text='Frame-2')
label_1.pack(); label_2.pack()
최초에 생성되는 Window(윈도우) 창에 Frame-1, Frame-2을 설정하고, Label 1, 2를 사용하여 각 Frame에 대응시켜 주었습니다.
이어서, New Window(윈도우) 창을 생성하고 New Window(윈도우) 창을 닫는 함수들에 대해서 알아보겠습니다.
def new_window():
global new_win
frame_2.config(bg='green')
new_win = Tk()
new_win.title("Maxima_2")
new_win.geometry("800x600+1000+200")
new_win.resizable(False, False)
new_win.mainloop()
def destroy_new_window():
global new_win
frame_2.config(bg='red')
new_win.destroy()
- new_window() 함수를 실행 시 전역 변수 new_win을 선언하여 사용하며, Frame-2의 Background Color를 Green으로 설정합니다. 해당 전역 번수를 이용하여 New Window(윈도우) 창을 생성할 때, 2개의 서로 다른 Window(윈도우) 창들이 겹치지 않도록 new_win.geometry("800x600+100+200")로 설정해주었습니다.
- destroy_new_window() 함수를 실행 시 마찬가지로 전역 변수 new_win을 선언하여 사용하였으며, Frame-2 Background Color를 Red로 설정하였습니다. 실제로 해당 New Window(윈도우) 창을 닫을 때에는 new_win.destroy()를 이용하였습니다.
New Window 버튼을 사용하여 New Window(윈도우) 창을 생성한 화면은 다음과 같습니다.
다음은 생성된 New Window(윈도우) 창에 대하여, Destroy New Window 버튼을 눌렀을 때의 화면입니다.
전체 코드에서도 보셨듯이, 변수 new_window에 대하여, new_window(), destroy_new_window() 함수 내 전역 변수를 선언했다는 점을 유의하셔서 코드를 구현해주시기 바랍니다.
지금까지, Tkinter 모듈을 사용하여, Graphic User Interface (GUI)의 버튼을 사용하여 New Window(윈도우) 창을 생성하고 닫는 방법에 대해서 알아보았습니다.
728x90
LIST
'Python > GUI (Graphic User Interface)' 카테고리의 다른 글
[Python, Tkinter] Graphic User Interface (GUI) - Messagebox (메세지 박스) (0) | 2022.07.24 |
---|---|
[Python, Tkinter] Graphic User Interface (GUI) - Event (이벤트) (0) | 2022.07.24 |
[Python, Tkinter] Graphic User Interface (GUI) - Button(버튼) 생성 (0) | 2022.07.16 |
[Python, Tkinter] Graphic User Interface (GUI) - Frame(프레임) 생성 (0) | 2022.07.16 |
[Python, Tkinter] Graphic User Interface (GUI) - 윈도우 창 생성 (0) | 2022.07.10 |
Comments