Pysimplegui: [๋ฒ„๊ทธ] ํ™”๋ฉด ํ•ด์ƒ๋„ ๋ณ€๊ฒฝ ํ›„ ์ด๋ฏธ์ง€ ์ €์žฅ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2020๋…„ 06์›” 03์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: PySimpleGUI/PySimpleGUI

๋ฌธ์ œ ์œ ํ˜•(๋ฒ„๊ทธ, ์งˆ๋ฌธ)

์œˆ๋„์šฐ 10 1909

ํŒŒ์ด์ฌ 3.7.4

PySimpleGUI 4.15.2


4.15.2 2020๋…„ 1์›” 15์ผ ์ถœ์‹œ

์ด๊ฒƒ์€ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. PySimpleGUI.py ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹์•„๋Š” ๊ฒƒ๋งŒํผ์ด๋‚˜ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ํŒŒ์ผ ์ƒ๋‹จ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import PySimpleGUI as sg
print(sg)
print(sg.version)

๋ช‡ ๊ฐœ์›” ๋˜๋Š” ๋ช‡ ๋…„ ๋™์•ˆ์˜ ๊ฒฝํ—˜ ์ˆ˜์ค€

____2๋…„__ Python ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜
_________ ์ „๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜
____yes_____ ์ด์ „์— ๋‹ค๋ฅธ Python GUI ํ”„๋ ˆ์ž„์›Œํฌ(tkinter, Qt ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ(์˜ˆ/์•„๋‹ˆ์š”๋„ ๊ดœ์ฐฎ์Œ)?

๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • [x ] ๋ฌธ์ œ ์ œ๊ธฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ ์ฝ๊ธฐ
  • [x ] ๋ฌธ์ œ์— ๋Œ€ํ•ด http://www.PySimpleGUI.org์˜ ์ฃผ์š” ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • [ ] PySimpleGUI(Qt, WX, Remi)๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ํŠน์ • ํฌํŠธ์— ๋Œ€ํ•œ readme ๊ฒ€์ƒ‰
  • [x ] ๋ชฉํ‘œ์™€ ์œ ์‚ฌํ•œ ๋ฐ๋ชจ ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. http://www.PySimpleGUI.com
  • [ ] GitHub์˜ ๊ฐ ํฌํŠธ ์•„๋ž˜์—๋„ ๋ฐ๋ชจ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • [ ] ๋””๋ฒ„๊ฑฐ ์™ธ๋ถ€์—์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰(๋ช…๋ น์ค„์—์„œ)
  • [x ] ๋ฌธ์ œ(๊ณต๊ฐœ ๋ฐ ์ข…๋ฃŒ)๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ด๋ฏธ ๋ณด๊ณ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

๋ฌธ์ œ/์งˆ๋ฌธ/์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์„ค๋ช…

๋‚ด ์ด๋ฏธ์ง€๋ฅผ PNG ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Save_Window_As_Image.py ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋” ํฐ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ™”๋ฉด ํ•ด์ƒ๋„๋ฅผ 1360x768์—์„œ 1920x1080์œผ๋กœ ๋†’์ธ ํ›„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€์˜ ์ผ๋ถ€๋งŒ ์ €์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชจ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
grafik
์›๋ž˜ ํ™”๋ฉด ํ•ด์ƒ๋„ 1360x768:
grafik
์›๋ณธ๋ณด๋‹ค ํ•ด์ƒ๋„๋ฅผ ๋‚ฎ์ถ”๋ฉด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ œ ์งˆ๋ฌธ์€: ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด ํŒŒ์ด์ฌ์˜ ์–ด๋–ค ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด PySimpleGUI์— ๋งค์šฐ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๊ธฐ๋ฐ˜ํ•œ ๋‚ด ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์„ค๋ช…์€ https://meteorspectroscopy.org/2020/03/27/meteor-spectra-analysis-new-version/ ์„ ์ฐธ์กฐ

๋ณต์ œํ•  ์ฝ”๋“œ

Demo_Save_Window_As_Image.py ์œ„ ์ฐธ์กฐ

Demo Programs

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@์ œ์ด์Šจ

๋‹น์‹ ์˜ ์กฐ์–ธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ์— ๋‘ ์ค„์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ํ•ด์ƒ๋„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ๊ฐ€ PySimpleGUI์— ๋Œ€ํ•ด ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ•ญ์ƒ ์ œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์–ป์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งค์šฐ ๋น ๋ฅธ ์‘๋‹ต. ์—„์ฒญ๋‚œ!

๋‚จ์ž ์ด๋ฆ„
grafik

๋ชจ๋“  4 ๋Œ“๊ธ€

๋ฐ๋ชจ ํ”„๋กœ๊ทธ๋žจ์€ 2๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • PySimpleGUI ๊ธฐ๋Šฅ ๋˜๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋””์ž์ธ ํŒจํ„ด/์˜ˆ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ์ผ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™„์ „ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹ˆ๋ผ ์•”์‹œ๋œ ๋Œ€๋กœ ๋ฐ๋ชจ์ž…๋‹ˆ๋‹ค. ์ €๋Š” PIL ์ „๋ฌธ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ PIL ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ๊ฐ€์žฅ ์ž˜ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์กฐ์–ธํ•ด ๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์œ ์„ฑ ์ŠคํŽ™ํŠธ๋Ÿผ ๋ถ„์„ ํ”„๋กœ๊ทธ๋žจ์€ ๋งค์šฐ ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค!

๋•Œ๋กœ๋Š” ๋””์Šคํ”Œ๋ ˆ์ด ํ•ด์ƒ๋„์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. PySimpleGUI๊ฐ€ ์•„๋‹ˆ๋ผ tkinter์— ์˜ํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

tkinter์˜ TkWinDisplayChanged ํ•จ์ˆ˜๋Š” Windows API ํ˜ธ์ถœ GetDeviceCaps๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HORZRES ๋ฐ VERTRES ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ™”๋ฉด ๋„ˆ๋น„์™€ ๋†’์ด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

GetDeviceCaps ์—๋Š” ์ฐธ๊ณ  ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

GetDeviceCaps๋Š” ๋””์Šคํ”Œ๋ ˆ์ด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ •๋ณด๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ •๋ณด ๋ณด๊ณ ๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋ฉด GetDeviceCaps๋Š” ๊ณ ์ • ๊ณ„์‚ฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋””์Šคํ”Œ๋ ˆ์ด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ๋ณด๊ณ ํ•˜๋ฉด GetDeviceCaps๋Š” ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋””์Šคํ”Œ๋ ˆ์ด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ •๋ณด ๋ณด๊ณ ๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒฝ์šฐ GetDeviceCaps๋Š” ๊ณ ์ • DPI(96 DPI) ๋˜๋Š” ๊ณ ์ • ํฌ๊ธฐ(๋””์Šคํ”Œ๋ ˆ์ด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ œ๊ณตํ•œ ์ •๋ณด์™€ ์ œ๊ณตํ•˜์ง€ ์•Š์€ ์ •๋ณด์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)๋ฅผ ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ WDDM(Windows ๋””์Šคํ”Œ๋ ˆ์ด ๋“œ๋ผ์ด๋ฒ„ ๋ชจ๋ธ)์— ๊ตฌํ˜„๋œ ๋””์Šคํ”Œ๋ ˆ์ด ๋“œ๋ผ์ด๋ฒ„(Windows Vista์— ๋„์ž…๋จ)๋Š” GDI๊ฐ€ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋ฏ€๋กœ GetDeviceCaps๋Š” ํ•ญ์ƒ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๊ฒฐ๊ณผ๋ฅผ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ tkinter๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ์ด๊ฒƒ์„ ์Šคํฌ๋ฆฝํŠธ์— ์ถ”๊ฐ€ํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. python ๋˜๋Š” tkinter๊ฐ€ ์‹คํ–‰ ์ค‘์ผ ๋•Œ ํ•ด์ƒ๋„๋ฅผ ์ „ํ™˜ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ๊ฐ’์ด ์ €์žฅ๋˜๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

import ctypes
ctypes.windll.user32.SetProcessDPIAware()   # Set unit of GUI to pixels

์•„๋งˆ๋„ ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@์ œ์ด์Šจ

๋‹น์‹ ์˜ ์กฐ์–ธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ์— ๋‘ ์ค„์„ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ํ•ด์ƒ๋„์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ๊ฐ€ PySimpleGUI์— ๋Œ€ํ•ด ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ•ญ์ƒ ์ œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์–ป์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งค์šฐ ๋น ๋ฅธ ์‘๋‹ต. ์—„์ฒญ๋‚œ!

๋‚จ์ž ์ด๋ฆ„
grafik

์ด๊ฒŒ ๋‹ค @jason990420 !!! ์™€์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰