Pysimplegui: [ ๊ฐœ์„ /๋ฒ„๊ทธ/์งˆ๋ฌธ] ์ œ ๋ฌธ์ œ๋Š”...

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

๋ฌธ์ œ ์œ ํ˜•(๊ฐœ์„  ์‚ฌํ•ญ, ์˜ค๋ฅ˜, ๋ฒ„๊ทธ, ์งˆ๋ฌธ)

์งˆ๋ฌธ/๊ฐœ์„  ์‚ฌํ•ญ

์šด์˜ ์ฒด์ œ

Win10, ๋ผ์Šคํ”ผ์•ˆ

ํŒŒ์ด์ฌ ๋ฒ„์ „

3.7

PySimpleGUI ํฌํŠธ ๋ฐ ๋ฒ„์ „

tkinter ํฌํŠธ, 4.20.0


4.20.0 2020๋…„ 6์›” 6์ผ ์ถœ์‹œ

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

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

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

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

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

๋‚ด ์•ฑ์€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๋ผ์ฆˆ๋ฒ ๋ฆฌ์˜ GUI์šฉ์ž…๋‹ˆ๋‹ค(๋น„๋™๊ธฐ ์ฐฝ).
UPS2-GUI
. ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ pysimplegui์˜ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์€ ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์งˆ๋ฌธ 1 : window['xxkey'].update()๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ ์š”์†Œ ์†์„ฑ ๋ชฉ๋ก์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

์งˆ๋ฌธ 2 : ์ผ๋ถ€ ์˜ˆ์— ๋‚˜ํƒ€๋‚˜๋Š” ์ฐฝ[f'xxkey']์˜ _f_์˜ ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ

๊ฐœ์„  ์‚ฌํ•ญ : ๋™์  ์—…๋ฐ์ดํŠธ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ…์ŠคํŠธ์˜ 'border_width'์ž…๋‹ˆ๋‹ค.

์ž‘์—… ์˜ˆ:
์ฐฝ['K_BATT_STATE'].update('LOW')
์ฐฝ[f'K_BATT_V'].update(background_color='๋…น์ƒ‰')

์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์˜ˆ:
์ฐฝ[f'K_BATT_V'].update(border_width=2)

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

๋‚ด๊ฐ€ ์•Œ๋‹ค์‹œํ”ผ

  • Update(value=None, background_color=None, text_color=None, font=None, visible=None)์— ํ‘œ์‹œ๋œ Text ์š”์†Œ ์†์„ฑ์˜ ์˜ต์…˜.
  • window[f'...] ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐ๋ชจ ์˜ˆ์ œ๋Š” Demo_Column_Elem_Swap_Entire_Window.py ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ์˜ํ•œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ต์ฒด์— ์‚ฌ์šฉ๋˜๋Š” f-๋ฌธ์ž์—ด.

๋‹น์‹ ์„ ์œ„ํ•œ ํ•˜๋‚˜์˜ ์ƒ˜ํ”Œ.

import PySimpleGUI as sg

layout = [[sg.Text('Hello World !', font=('Courier New',20), key='TEXT1')],
          [sg.Text('dlroW olleH !', font=('Courier New',20), key='TEXT2')]]
window = sg.Window('Text', layout, finalize=True)
window['TEXT1'].Widget.configure(borderwidth=5, relief='solid')

while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break

window.close()

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

๋ฌธ์„œ์™€ ๋‚ด์žฅ๋œ ๋ฌธ์„œ ๋ฌธ์ž์—ด์€ ๊ฐ ์š”์†Œ์˜ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ž์„ธํ•œ ํ†ตํ™” ์ฐธ์กฐ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.
http://calls.PySimpleGUI.org
๋ฌด์–ธ๊ฐ€๊ฐ€ ์—†์œผ๋ฉด ๋ช‡ ๊ฐ€์ง€ ์„ ํƒ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์œ„์ ฏ์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜๊ฑฐ๋‚˜ ํ–ฅ์ƒ ์š”์ฒญ์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.,

๋‚ด๊ฐ€ ์•Œ๋‹ค์‹œํ”ผ

  • Update(value=None, background_color=None, text_color=None, font=None, visible=None)์— ํ‘œ์‹œ๋œ Text ์š”์†Œ ์†์„ฑ์˜ ์˜ต์…˜.
  • window[f'...] ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ๋ฐ๋ชจ ์˜ˆ์ œ๋Š” Demo_Column_Elem_Swap_Entire_Window.py ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ์˜ํ•œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ต์ฒด์— ์‚ฌ์šฉ๋˜๋Š” f-๋ฌธ์ž์—ด.

๋‹น์‹ ์„ ์œ„ํ•œ ํ•˜๋‚˜์˜ ์ƒ˜ํ”Œ.

import PySimpleGUI as sg

layout = [[sg.Text('Hello World !', font=('Courier New',20), key='TEXT1')],
          [sg.Text('dlroW olleH !', font=('Courier New',20), key='TEXT2')]]
window = sg.Window('Text', layout, finalize=True)
window['TEXT1'].Widget.configure(borderwidth=5, relief='solid')

while True:

    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break

window.close()

๊ณ ๋งˆ์›Œ์š” ์ œ์ด์Šจ!

๊ธฐ๋ณธ "์œ„์ ฏ"์˜ ๊ธฐ๋Šฅ์ด PySimpleGUI API๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉด .Widget ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ GUI ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์œ„์ ฏ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์˜ ์ด์‹์„ฑ์„ ์žƒ๊ฒŒ ๋˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งŒ์กฑ์Šค๋Ÿฌ์šด ์†”๋ฃจ์…˜์„ ์–ป์œผ์…จ๋‹ค๋‹ˆ ๋‹คํ–‰์ž…๋‹ˆ๋‹ค.

์•ˆ๋…• ์ œ์ด์Šจ, ์•ˆ๋…• ๋งˆ์ดํฌ
์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‘ ๊ฐ€์ง€ ๋‹ต๋ณ€ ๋ชจ๋‘ ๋„์›€์ด๋˜์–ด ๋ช‡ ๋ถ„ ์•ˆ์— ๋‚ด ๊ณ ํ†ต์„ ๋๋ƒˆ์Šต๋‹ˆ๋‹ค. :-)
Pysimplegui๋Š” ๋†€๋ผ์šด ์ง€์›์„ ์ œ๊ณตํ•˜๋Š” ํ›Œ๋ฅญํ•œ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค!
๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋‚ด git ๊ณ„์ •์— ๊ฒŒ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ผ์ฆˆ๋ฒ ๋ฆฌ ๋ชจ๋ธ 3++ ๋ฐ ํŒŒ์ด ์ œ๋กœ๋ฅผ ์œ„ํ•œ ๋ฌด์ •์ „ ๊ณ ํšจ์œจ ์ „์› ๊ณต๊ธ‰ ์žฅ์น˜์ด๋ฉฐ ์™„์ „ํ•œ ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

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