CodeGym /ํ–‰๋™ /Python SELF KO /GUI (๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค)์˜ ๊ธฐ์ดˆ์™€ ์ฐฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ

GUI (๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค)์˜ ๊ธฐ์ดˆ์™€ ์ฐฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ

Python SELF KO
๋ ˆ๋ฒจ 49 , ๋ ˆ์Šจ 0
์‚ฌ์šฉ ๊ฐ€๋Šฅ

1. GUI๋ž€?

๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ์„ธ๊ณ„์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹œ๊ฐ์ ์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์œผ๋กœ ๋ณ€์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ์ž๋™ํ™”ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์› ์ง€๋งŒ, ์‚ฌ์šฉ์ž ํŽธ์˜๋ฅผ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋ฉด ์–ด๋–จ๊นŒ์š”? ์˜ค๋Š˜์€ ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(GUI)์˜ ๊ธฐ์ดˆ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , Tkinter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฐฐ์›Œ๋ณผ๊ฒŒ์š”. ๋ฒจํŠธ๋ฅผ ๋‹จ๋‹จํžˆ ๋งค์„ธ์š”, ์˜ค๋Š˜์€ ๊ทธ๋ž˜ํ”ฝ ๋งˆ์ˆ ์ด ๊ฐ€๋“ํ•  ๊ฑฐ์˜ˆ์š”!

GUI (๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค) ๊ฐœ๋…

GUI (Graphical User Interface)๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ "์–ผ๊ตด"๊ณผ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ณ  ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ, ๋ฒ„ํŠผ, ์ž…๋ ฅ ํ•„๋“œ, ํ…์ŠคํŠธ, ์‹ฌ์ง€์–ด ๊ท€์—ฌ์šด ๊ณ ์–‘์ด ๋ฐฐ๊ฒฝํ™”๋ฉด๊นŒ์ง€ ํฌํ•จ๋˜์–ด์š”. ๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค์™€๋Š” ๋‹ฌ๋ฆฌ, GUI๋Š” ๋” ์ง๊ด€์ ์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๋ณต์žกํ•œ ๋ช…๋ น์–ด์™€ ์Šคํฌ๋ฆฝํŠธ์— ๋น ์ง€์ง€ ์•Š๊ณ  ๋” ์‰ฝ๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ๋„๊ตฌ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋ž๋‹ˆ๋‹ค!

GUI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋” ๋งค๋ ฅ์ ์ด ๋˜๊ณ , ์‚ฌ์šฉ์ด ๋” ์ด์ƒ ์†๊ฐ€๋ฝ ๋งˆ๋ผํ†ค์ด ์•„๋‹ˆ๊ฒŒ ๋˜์ฃ . ์ƒ์ƒํ•ด๋ณด์„ธ์š”, ๋ณต์žกํ•œ ๋ช…๋ น์–ด ๋Œ€์‹  "์‹œ์ž‘ํ•˜๊ธฐ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ธ๊ณ„์— ๋ฌธ์„ ์—ด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„์š”.

GUI ์‚ฌ์šฉ์˜ ์žฅ์ 

์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์ด๋ ‡๊ฒŒ ๋งํ–ˆ์ฃ : "๋งŒ์•ฝ ๋‚ด ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์•„๋ฆ„๋‹ค์›€์„ ์ž๋ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ๊ทธ๋“ค์€ Instagram ๊ณ„์ •์„ ๊ฐ€์กŒ์„ ๊ฑฐ์•ผ." GUI๋กœ ์ด๋ฅผ ๊ฑฐ์˜ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์š”: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ƒ๊ธฐ๋ฅผ ๋ถˆ์–ด๋„ฃ์–ด ๋” ์ƒํ˜ธ์ž‘์šฉ์ ์ด๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ณด๊ธฐ ์ข‹์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ๋ž‘ํ•˜์ฃ . GUI๋Š” ๋ณต์žกํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„๋‹จํ•œ ๋™์ž‘ ๋’ค์— ์ˆจ๊ธธ ์ˆ˜๋„ ์žˆ์–ด์š”. ๋ณต์žกํ•œ ์ž‘์—… ์ˆ˜ํ–‰์„ ์œ„ํ•œ ๋ฒ„ํŠผ ํด๋ฆญ๋งŒํผ ๊ฐ„๋‹จํ•  ์ˆ˜๋Š” ์—†์ฃ !

2. Tkinter ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์†Œ๊ฐœ

์ด์ œ GUI์˜ ์žฅ์ ์„ ์ดํ•ดํ–ˆ์œผ๋‹ˆ, Python์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ธ Tkinter๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Python์— ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ, ๋งˆ์น˜ ๋„๋„›๊ณผ ์ปคํ”ผ์ฒ˜๋Ÿผ ์•„์ฃผ ์ฐฐ๋–ก๊ถํ•ฉ์ž…๋‹ˆ๋‹ค. Tkinter๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฐฝ, ๋ฒ„ํŠผ, ํ…์ŠคํŠธ ํ•„๋“œ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐํƒ€ ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.

Tkinter์˜ ๊ธฐ๋Šฅ ํ›‘์–ด๋ณด๊ธฐ

Tkinter๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Tcl/Tk๋ฅผ ์‚ฌ์šฉํ•ด์š”. Tcl์ด ๊ธฐ์ˆ ์ ์ธ ์ดˆ์ฝœ๋ฆฟ๊ณผ ํ˜ผ๋™๋˜์ง€ ์•Š๋„๋ก ํ•˜์„ธ์š”, ํ•˜์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๋ถ„๋ช…ํžˆ ๋‹ฌ์ฝคํ•  ๊ฑฐ์˜ˆ์š”! Tkinter๋Š” ์ฐฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋‰ด, ๋Œ€ํ™” ์ƒ์ž, ๋ฒ„ํŠผ ๋ฐ ๋“œ๋กœ์ž‰ ์บ”๋ฒ„์Šค ๋“ฑ์„ ํฌํ•จํ•œ ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.

Tkinter๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์ œ

๊ฐ„๋‹จํ•œ "์•ˆ๋…•ํ•˜์„ธ์š”, ์„ธ๊ณ„" ๋ฉ”์‹œ์ง€๋ถ€ํ„ฐ ์ „์ฒด ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ๋‚˜ ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด๊นŒ์ง€, Tkinter๋กœ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ถ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ณ„์‚ฐ๊ธฐ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ (์„ธํƒ๊ธฐ ์•ˆ์—์„œ ์žƒ์–ด๋ฒ„๋ฆฐ ์–‘๋ง ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์€ ์•„์ง ํ•ด๊ฒฐ ์•ˆ ๋์Šต๋‹ˆ๋‹ค), ๊ธˆ์š”์ผ๋งŒ ๋˜๋ฉด ์–ด๋””๋กœ ์‚ฌ๋ผ์ง€๋Š”์ง€ ๋ชจ๋ฅผ ์›”๊ธ‰์„ ์ถ”์ ํ•˜๋Š” ์˜ˆ์‚ฐ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”.

3. Tkinter ์„ค์น˜ํ•˜๊ธฐ

์ด์ œ Tkinter์˜ ๋งˆ๋ฒ•์„ ๊ฒฝํ—˜ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ๊ฐ€ ์ค€๋น„๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ด์š”. ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฌ์ง€๋งŒ, ํ•จ๊ป˜ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

Tkinter ์„ค์น˜ ๊ฐ€์ด๋“œ

์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค: Tkinter๋Š” ๋งˆ์น˜ ๊ณ ์Šด๋„์น˜์™€ ํ† ๋ผ์˜ ์šฐ์ •์ฒ˜๋Ÿผ ๋Š˜ Python๊ณผ ํ•จ๊ป˜ ์žˆ์–ด์š”. Python์„ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด, Tkinter๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๋‹ค๋ฉด, ํŠนํžˆ Linux ๋˜๋Š” Windows ์‚ฌ์šฉ์ž๋ผ๋ฉด ์ถ”๊ฐ€ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋จผ์ € Tkinter๊ฐ€ ์‹ค์ œ๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”:


import tkinter as tk

window = tk.Tk()
window.title("Tkinter ํ™•์ธ")
window.geometry("200x100")
lbl = tk.Label(window, text="Tkinter ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!")
lbl.pack()
window.mainloop()

์ด ์ฝ”๋“œ๊ฐ€ "Tkinter ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!"๋ผ๋Š” ํ…์ŠคํŠธ๊ฐ€ ์žˆ๋Š” ์ฐฝ์„ ์—ด์–ด์ฃผ๋ฉด, ์ถ•ํ•˜๋“œ๋ ค์š”, ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์— ์žˆ์Šต๋‹ˆ๋‹ค!

์„ค์น˜ ํ™•์ธ ๋ฐ ์ฒซ ๋ฒˆ์งธ ๊ฐ„๋‹จํ•œ ์ฐฝ ๋งŒ๋“ค๊ธฐ

์ฝ”๋“œ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”! Tkinter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ์ฐฝ์„ ์ƒ์„ฑํ•ด๋ด…์‹œ๋‹ค:


import tkinter as tk

# ๋ฉ”์ธ ์ฐฝ ์ƒ์„ฑ
root = tk.Tk()
root.title("๋‚˜์˜ ์ฒซ Tkinter ์ฐฝ")
root.geometry("800x600")

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฉ”์ธ ๋ฃจํ”„ ์‹คํ–‰
root.mainloop()

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” "๋‚˜์˜ ์ฒซ Tkinter ์ฐฝ"์ด๋ผ๋Š” ์ œ๋ชฉ์˜ ๊ฐ„๋‹จํ•œ ์ฐฝ๊ณผ 800x600 ํ”ฝ์…€์˜ ํฌ๊ธฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ํŠน๋ณ„ํ•œ ๊ฑด ์—†์ง€๋งŒ, ์ด๊ฒƒ์€ ์ƒˆ๋กœ์šด ๊ทธ๋ž˜ํ”ฝ ๋ชจํ—˜์˜ ์ดˆ๊ธฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค!

์ด์ œ Tkinter๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜์—ˆ์œผ๋‹ˆ, ๋” ๋ณต์žกํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๊ฐ•์˜๋กœ ๋„˜์–ด๊ฐ€๋ณด์„ธ์š”. ์šฐ๋ฆฌ์™€ ํ•จ๊ป˜ ํด๋ฆญํ•˜๋ฉฐ Python ํ”„๋กœ๊ทธ๋žจ์„ ๋” ๋ฐ๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์š”!

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION