Rescale ๋ฏธํŒ… ์˜ˆ์•ฝ

GUI๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 10๊ฐœ

ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

GUI๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 10๊ฐœ

์—…๋ฐ์ดํŠธ on

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

์šฐ์ˆ˜ํ•œ GUI๋Š” ํ”Œ๋žซํผ์˜ ๋ช…์„ฑ๊ณผ ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์š”์†Œ์˜ ์กฐํ•ฉ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์›น ์‚ฌ์ดํŠธ์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์—์„œ ํฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. 

GUI๋ฅผ ๋งŒ๋“ค ๋•Œ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ๋Š” Python์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Python์€ GUI ํ”„๋ ˆ์ž„์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋Œ€ํ™”ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. Python์—๋Š” ๊ต์ฐจ ํ”Œ๋žซํผ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ํ”Œ๋žซํผ๋ณ„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํฌํ•จํ•˜์—ฌ GUI ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๊ด‘๋ฒ”์œ„ํ•œ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ GUI์šฉ ์ตœ๊ณ ์˜ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 10๊ฐœ์ž…๋‹ˆ๋‹ค. 

1. PyQt5

Riverbank Computing์—์„œ ๊ฐœ๋ฐœํ•œ PyQt5๋Š” GUI์šฉ์œผ๋กœ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Python ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. PyQt ํŒจํ‚ค์ง€๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํฌ๋กœ์Šค ํ”Œ๋žซํผ ํ”„๋ ˆ์ž„์›Œํฌ์ธ Qt ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

PyQt5๋Š” ์™„์ „ํžˆ ํฌ๋กœ์Šค ํ”Œ๋žซํผ์ด๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Mac, Windows, Linux, iOS ๋ฐ Android์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ์ œ๊ณตํ•˜๋Š” QtGUI ๋ฐ QtDesigner ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์†Œ๊ทœ๋ชจ ๋ฐ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋กœ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ PyQt5์˜ ์ฃผ์š” ์ด์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. 

  • ์ฝ”๋”ฉ ๋‹ค์–‘์„ฑ 
  • ๋‹ค์–‘ํ•œ UI ๊ตฌ์„ฑ ์š”์†Œ
  • ์—ฌ๋Ÿฌ ํ•™์Šต ๋ฆฌ์†Œ์Šค
  • ๋„คํŠธ์›Œํ‚น, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ๋“ฑ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋ณธ ํ”Œ๋žซํผ API

2. ํ‹ฐํ‚จํ„ฐ

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

Tkinter์—์„œ๋Š” ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ์œ„์ ฏ์ด๋ผ๊ณ  ํ•˜๋ฉฐ ๊ฐ ์œ„์ ฏ์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Frame, Buttons, Checkbuttons, Labels, File Dialogs ๋ฐ Canvas์™€ ๊ฐ™์ด ๋งŽ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ด๋ฏธ ์นœ์ˆ™ํ•œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ Tkinter์˜ ์ฃผ์š” ์ด์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. 

  • ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  ๊ตฌํ˜„์ด ๋น ๋ฆ„
  • ์œ ์—ฐํ•˜๊ณ  ์•ˆ์ •์ ์ธ
  • ํŒŒ์ด์ฌ์— ํฌํ•จ
  • ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ ์ œ๊ณต

3. ํ‚ค๋น„

OpenGL ES 2 ๊ฐ€์† ํ”„๋ ˆ์ž„์›Œํฌ์ธ Kivy๋Š” ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Windows, Mac, Linux, Android ๋ฐ iOS์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ํˆดํ‚ท์— 20๊ฐœ ์ด์ƒ์˜ ์œ„์ ฏ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. 

Kivy๋Š” Python๊ณผ Cython์„ ํ˜ผํ•ฉํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฉ€ํ‹ฐํ„ฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ฐ€์žฅ ์ง๊ด€์ ์ธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ€ํ‹ฐ ํ„ฐ์น˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณด์ด์ง€ ์•Š๋Š” ๋™์•ˆ ๋‹ค์–‘ํ•œ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์œ ํ˜•์ธ NUI(Natural User Interface)๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. 

Kivy๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋””์ž์ด๋„ˆ๊ฐ€ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋ฉฐ OpenGL ES 2์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ œ๊ณต ์ง€์›์„ ํ†ตํ•ด ์ตœ์‹  ๊ทธ๋ž˜ํ”ฝ๊ณผ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ Kivy์˜ ์ฃผ์š” ์ด์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. 

  • ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜
  • ํ•œ ๋ฒˆ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ๋ชจ๋“  ์žฅ์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ€ํ‹ฐ ํ„ฐ์น˜๋ฅผ ์ง€์›ํ•˜๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด ์œ„์ ฏ
  • ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์— ๋ฐฐํฌ

4. wxํŒŒ์ด์ฌ

๋˜ ๋‹ค๋ฅธ GUI์šฉ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” wxPython์œผ๋กœ, ์ด๋ฅผ ํ†ตํ•ด Python ๊ฐœ๋ฐœ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ๋„ค์ดํ‹ฐ๋ธŒ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ wxPython์€ Mac OS, Windows, Linux ๋ฐ Unix ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. 

wxPython์—๋Š” ๊ฐ€์žฅ ํฐ ํŒ๋งค ํฌ์ธํŠธ์ธ ๋งŽ์€ ์œ„์ ฏ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์ฆ‰์‹œ ๋ฉ‹์ง€๊ฒŒ ๋ณด์ด๋ฉฐ ๋งŽ์€ ์‚ฌ์šฉ์ž ์ง€์ • ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, Tkinter์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค ํ•™์Šต ๊ณก์„ ์ด ๋” ๊ฐ€ํŒŒ๋ฆ…๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ wxPython์˜ ๋ช‡ ๊ฐ€์ง€ ์žฅ์ ์ž…๋‹ˆ๋‹ค. 

  • ๋Œ€๊ทœ๋ชจ ์œ„์ ฏ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ๊ธฐ๋ณธ ๋ชจ์–‘๊ณผ ๋А๋‚Œ
  • ๋งค์šฐ ์œ ์—ฐํ•œ 
  • ์œ ์šฉํ•œ ์‚ฌ์šฉ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ 

5. PySimpleGUI

PySimpleGUI๋Š” Python ์ดˆ๋ณด์ž๊ฐ€ GUI ๊ฐœ๋ฐœ์„ ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก 2018๋…„์— ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” ๋” ๋ณต์žกํ•œ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€๋งŒ PySimpleGUI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ณ ๊ธ‰ ๋ณต์žก์„ฑ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š” ์—†์ด ๋ฐ”๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

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

๋‹ค์Œ์€ PySimpleGUI์˜ ์ฃผ์š” ์ด์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. 

  • ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ 
  • ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ณ ๊ธ‰ ๋ณต์žก์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Qt, Tkinter, wxPython ๋ฐ Remi ์‚ฌ์šฉ
  • ์„ ํ˜ธํ•˜๋Š” GUI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ UI ์ƒ์„ฑ

6. ๋ฆฌ๋ฐ”๋ธŒ

Libavg๋Š” Python์„ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•˜๋Š” GUI ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ตœ์‹  ํ„ฐ์น˜ ๊ธฐ๋ฐ˜ ์žฅ์น˜์šฉ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ์ตœ๊ณ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ ๋„๋ฆฌ ๊ฐ„์ฃผ๋˜๋ฉฐ ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์€ OpenGL ๋ฐ GPU ์…ฐ์ด๋”๋ฅผ ํ†ตํ•ด ๋‹ฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. 

Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์นด๋ฉ”๋ผ ์ง€์›, ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ง€์›, ํ…์ŠคํŠธ ์ •๋ ฌ, GPU ํšจ๊ณผ ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ธ‰ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ ์—”์ง„์—๋Š” ํšŒ์ „, ํฌ๊ธฐ ์กฐ์ •, ํ˜ผํ•ฉ ๋ชจ๋“œ, ์ž๋ฅด๊ธฐ ๋ฐ ๊ธฐํƒ€ ์‹œ๊ฐ์  ์š”์†Œ ๊ธฐ์ˆ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

Libavg๋Š” ๋น ๋ฅธ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ Libavg์˜ ์ฃผ์š” ์ด์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

  • ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋กœ์„œ์˜ ํŒŒ์ด์ฌ
  • ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ
  • ๊ณ ๊ธ‰ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ ์—”์ง„
  • C++๋กœ ์ž‘์„ฑ

7. ํŒŒ์ดํผ

PyForms GUI ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ Windows GUI ๋ชจ๋“œ, ์›น ๋ชจ๋“œ ๋ฐ ํ„ฐ๋ฏธ๋„ ๋ชจ๋“œ๋ฅผ ์œ„ํ•œ ๊ณ ๋„์˜ ๋Œ€ํ™”ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” Windows Forms์˜ Python ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. 

์˜คํ”ˆ ์†Œ์Šค ๋ฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ PyQT ๋ฐ Open GL๊ณผ ๊ฐ™์€ ์ธ๊ธฐ ์žˆ๋Š” ๊ทธ๋ž˜ํ”ฝ ์ค‘์‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

PyForms๋Š” PyForms-GUI, PyForms-Web ๋ฐ PyForms-Terminal์˜ ์„ธ ๊ฐ€์ง€ ์„น์…˜์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ณ„์ธต์€ PyForms ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ Windows๋กœ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์›น ๋˜๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ PyForms์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. 

  • Windows GUI ๋ชจ๋“œ, ์›น ๋ชจ๋“œ ๋ฐ ํ„ฐ๋ฏธ๋„ ๋ชจ๋“œ๋ฅผ ์œ„ํ•œ ๊ณ ๋„์˜ ๋Œ€ํ™”ํ˜• ์ธํ„ฐํŽ˜์ด์Šค
  • ์˜คํ”ˆ ์†Œ์Šค
  • ๊ต์ฐจ ํ”Œ๋žซํผ
  • ์ฝ”๋“œ๋ฅผ ํฌ๊ฒŒ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

8. ํŒŒ์ด์‚ฌ์ด๋“œ2

๋˜ ๋‹ค๋ฅธ ์ตœ์ƒ์œ„ Python GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” PySide2 ๋˜๋Š” Python์šฉ QT๋กœ, Qt(PySide2)์— ๋Œ€ํ•œ ๊ณต์‹ Python ๋ฐ”์ธ๋”ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Python ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ”์ธ๋”ฉ ์ƒ์„ฑ๊ธฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C++ ํ”„๋กœ์ ํŠธ๋ฅผ Python์— ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ์€ PySide2์˜ ์ฃผ์š” ์ด์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. 

  • ํฌ๋กœ์Šค ํ”Œ๋žซํผ
  • ๊ด‘๋ฒ”์œ„ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์› ๋ฐ ๋ฌธ์„œํ™”
  • Python 3 ๋ฐ Python 2.7 ์ง€์›
  • Mercedes์™€ ๊ฐ™์€ ๋Œ€๊ธฐ์—…์—์„œ ์‚ฌ์šฉ

9. ๋ฐ€๋ž

๋ชฉ๋ก์˜ ๊ฑฐ์˜ ๋์— wxPython์˜ ๋ž˜ํผ์ธ Wax๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. wxPython๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” Wax๋Š” ํ›จ์”ฌ ๋” ์‚ฌ์šฉ์ž ์นœํ™”์ ์ด๋ผ๋Š” ์ ์—์„œ ๋‘๋“œ๋Ÿฌ์ง‘๋‹ˆ๋‹ค. Wax๋Š” Python์šฉ ํ™•์žฅ ๋ชจ๋“ˆ๋กœ๋„ ๊ตฌํ˜„๋˜๋ฉฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. 

Wax๋Š” GUI ๊ตฌ์ถ•์„ ์œ„ํ•ด Python ์š”์†Œ ๋ฐ ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ณด๋‹ค ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ”Œ๋žซํผ์ด ๋งค์šฐ ํšจ์œจ์ ์ธ wxWindows์ธ Wax๋Š” ๋†’์€ ์ˆ˜์ค€์˜ ํšจ์œจ์„ฑ๊ณผ ์†๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

Wax์˜ ์ฃผ์š” ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 

  • ์˜คํ”ˆ ์†Œ์Šค ๋ฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ
  • ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด
  • wxPython๊ณผ ๋™์ผํ•œ ๊ธฐ๋Šฅ
  • Python์šฉ ํ™•์žฅ ๋ชจ๋“ˆ๋กœ ๊ตฌํ˜„

10. ํŒŒ์ด GUI

GUI์šฉ ์ตœ๊ณ ์˜ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 10๊ฐœ ๋ชฉ๋ก์„ ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ๊ฒƒ์€ PyGUI์ž…๋‹ˆ๋‹ค. PyGUI๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ Python ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ ๊ธฐ๋ณธ ์š”์†Œ๋กœ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ API์ž…๋‹ˆ๋‹ค. ์•ฑ๊ณผ ๋Œ€์ƒ ํ”Œ๋žซํผ ๊ฐ„์— ๋” ์ ์€ ์ฝ”๋“œ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํšจ์œจ์„ฑ๋„ ๋” ๋†’์Šต๋‹ˆ๋‹ค. 

PyGUI๋Š” Windows ์‹œ์Šคํ…œ, MacOS ์žฅ์น˜ ๋ฐ Unix ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์‹œ์Šคํ…œ์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” Python์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 

๋‹ค์Œ์€ PyGUI์˜ ์ฃผ์š” ์ด์  ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

  • Python์œผ๋กœ ์ž‘์„ฑ๋œ ๋ชจ๋“  ๋ฌธ์„œ
  • Python 2 ๋ฐ 3์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • OpenGL ๋ฐ GTK์™€ ๊ฐ™์€ Python ํ™•์žฅ ์ง€์›
  • ์˜คํ”ˆ ์†Œ์Šค ๋ฐ ํฌ๋กœ์Šค ํ”Œ๋žซํผ

 

Alex McFarland๋Š” ์ธ๊ณต ์ง€๋Šฅ์˜ ์ตœ์‹  ๊ฐœ๋ฐœ์„ ํƒ๊ตฌํ•˜๋Š” AI ์ €๋„๋ฆฌ์ŠคํŠธ์ด์ž ์ž‘๊ฐ€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ „ ์„ธ๊ณ„ ์ˆ˜๋งŽ์€ AI ์Šคํƒ€ํŠธ์—… ๋ฐ ์ถœํŒ๋ฌผ๊ณผ ํ˜‘๋ ฅํ•ด ์™”์Šต๋‹ˆ๋‹ค.