[wxpython] 다중모니터 감지하기

Posted by 백창
2017. 6. 28. 15:17 개발/Python
반응형

#1


wxPython 은 GUI를 만들 수 있는 오픈소스 라이브러리이다.


GUI를 만드는건 만드는건데 가끔 보면 듀얼모니터, 다중모니터를 사용하면서 


모든 화면에 프로그램을 띄울 필요가 생길 것이다.


그걸 어떻게 감지하는지 퍼온 소스를 적어 놓겠다.


#2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import wx
 
app = wx.App()
 
#To get the count of displays
num_displays = wx.Display.GetCount()
 
#Open a frame on each display
for display_num in range(num_displays):
    #Get a display object
    display = wx.Display(display_num)
 
    #To get a wx.Rect that gives the geometry of a display
    geometry = display.GetGeometry()
 
    #Create a frame on the display
    frame = wx.Frame(None,-1,"Display %d"%display_num,
    geometry.GetTopLeft(),geometry.GetSize())
 
    #Make the frame visible
    frame.Show()
 
app.MainLoop()
cs


모니터의 갯수를 저장해서 반복문을 돌며 각 화면마다 프레임을 실행해주는 소스가 되겠다.


#3


https://bytes.com/topic/python/answers/486021-multi-monitor-support

반응형

'개발 > Python' 카테고리의 다른 글

[Python] 웹페이지 변화 감지하기  (2) 2017.04.27

[Python] 웹페이지 변화 감지하기

Posted by 백창
2017. 4. 27. 16:48 개발/Python
반응형

# 1


음.. 파이썬을 시작하게된 이유였던가 ?


웹 페이지에 변화를 감지하기 위해서 파이썬을 처음으로 깔았다.


페이지 변화를 감지해서 뭐하냐 싶겠지만 의외로 용도가 많다.


공지사항에 새로운글(있던 글이 지워지거나 수정된 것도 감지되겠지만)을 체크하여 알림을 보낼 수 있고,

뭐 다른 용도도 많이 있다.


내가 처음 사용한 용도는 회사 홈페이지가 뻑나면 복구 스크립트를 돌리는데 사용했다.

뻑난지를 이 방법으로 확인한거지


# 원리


원리는 별거 없다. 


일정 주기마다 페이지를 긁어 해쉬값으로 저장해두고 기존에 저장된 해쉬값과 비교를 하는 것이다.


페이지가 조금만 달라져도 해쉬값은 크게 변하니 쉽게 감지할 수 있다.


# 소스


1. 페이지를 긁어서 해쉬값으로 변환하여 저장


음.. getList는 긁어오고 싶은 사이트들을 저장해둔 파일을 불러오는 소스라서 무시해도된다.

그냥 주소써서 긁어오면됨


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
31
32
33
34
35
36
37
# coding : utf-8
import requests
import hashlib
import time
import sys
import re
import getList
reload(sys)
sys.setdefaultencoding('utf-8')
 
# get check list
lines = getList.getList()
 
cnt = len(lines)
= 0
 
try :
 
    while i < cnt:
        chkList = re.split(r'[\s]',lines[i])
        i += 1
        with requests.Session() as c:
            URL = chkList[1]
 
            html = c.get(URL)
 
            m = hashlib.md5(html.text)
             now = time.localtime()
            file = open("PATH/md5_%s_%04d-%02d-%02d.log"%(chkList[0],now.tm_year, now.tm_mon, now.tm_mday),'a')
    
            print >> file, m.hexdigest()
            file.close()
 
    execfile("PATH/check.py",{})
except:
    print 'error'
 
cs



2. 페이지비교


offset에 따라 몇번째까지 비교할지 설정할 수 있고

2로 되어있으니 최근 2번 것과 비교하여 다르면 메시지를 보내도록 하였다.

(메시지는 텔레그램으로 보내면 편함)


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
31
32
33
34
35
36
37
38
39
40
#-*- coding: utf-8 -*-
import time
import re
import getList
import sendMsg
 
# get check List
lists = getList.getList()
lists_cnt = len(lists)
= 0
 
while i < lists_cnt:
    chkList = re.split(r'[\s]',lists[i])
    i += 1
    now = time.localtime()
 
    file = open("PATH/md5_%s_%04d-%02d-%02d.log"%(chkList[0], now.tm_year, now.tm_mon, now.tm_mday),'r')
    lines = file.readlines()
    file.close()
 
    flag = True
 
    cnt = len(lines)
 
    # set compare res
    offset = 2
    if cnt < offset:
        offset = cnt
 
    # compare hash value
    for j in range(cnt-offset, cnt):
        if lines[j] != lines[cnt-1]:
            flag = False
 
    # if unmatch
    if flag == False:
        # send msg
        for z in range(2len(chkList)):
            sendMsg.send_msg_to_telegram(chkList[z],'['+chkList[0]+'] 변화 감지 : \t'+chkList[1])
 
cs


# 마침


벌써 비슷한 방식으로 3개째 프로그램을 만들었다.

생각하기에 따라서 활용도가 많으니 잘 활용해봐야겠다.


반응형

'개발 > Python' 카테고리의 다른 글

[wxpython] 다중모니터 감지하기  (0) 2017.06.28