2019. 1. 17. 03:02ㆍ프로젝트/토렌트 마그넷 크롤링
파이썬 GUI - Tkinter
이전에 만든 마그넷 검색, 다운로드 프로그램에 사용자 편의를 위해 GUI를 추가합니다.
GUI를 위한 라이브러리로 Tkinter를 사용했습니다.
Tkinter의 Label, Listbox, Button을 주로 사용했습니다.
Label 위젯
Label은 위 그림과 같이 문자열을 넣기 위해 사용했고 아래와 같은 코드로 Label을 넣어줍니다.
mlabel = Label(text='제작 : jinho021712@gmail.com').pack()
mlabel = Label(text='아래 검색창에 입력 후 엔터 → 선택 후 다운로드 버튼').pack()
.pack()으로 위젯의 배치 속성을 정하고 가장 빨리 선언된 .pack()부터 순차적으로 놓입니다.
Listbox 위젯
Listbox위젯은 위 그림에서 다운로드 버튼 아래 있는 흰 창입니다.
말 그대로 리스트를 놓기위한 위젯입니다. 아래 코드와 같이 만들고
List는 배열로 만들었기 때문에 List.insert("값") 과 같은 방법으로 요소를 추가 할 수 있습니다.
List2 = Listbox(mGui, width = 92)
List2.pack()
Button 위젯
다운로드를 위한 '다운로드' 버튼과 '방송회차정보' 버튼을 추가했습니다.
버튼 클릭 시 이벤트는 리스트에서 선택된 요소의 마그넷 코드를 웹 브라우저에서 여는 것입니다.
def mgnetBt():
try:
clicked_items = List1.curselection()
clicked_items_num = clicked_items[0]
#print(clicked_items_num)
mglink = mglist[clicked_items_num]
webbrowser.open("magnet:?xt=urn:btih:"+mglink)
except:
tkinter.messagebox.showinfo('안내','마그넷 주소가 존재하지 않거나 불러올 수 없습니다.')
버튼 위젯도 마찬가지로 .pack()을 사용해서 넣어주었고 옵션을 넣어 줄 수 있습니다.
text로 버튼에 문자열을 넣어주었고 command로 실행될 함수를 연결했습니다.
mbutton = Button(mGui, text = '다운로드', command = mgnetBt, width = 92).pack()
검색창(Entry 위젯)
입력 창은 Entry위젯으로 만들 수 있습니다.
검색은 버튼 대신 검색어 입력 후 엔터를 치면 이벤트를 실행하도록 했습니다.
mEntry = Entry(mGui, textvariable = ment, width = 92)
mEntry.bind("<Return>", searchBt)
mEntry.pack()
mEntry.bind("<Return>", searchBt) 이 부분이 이벤트를 실행시키는 부분입니다.
<Return>은 엔터가 눌렸을때를 조건으로 두는 것이고 searchBt라는 함수를 실행합니다.
리스트 선택과 클릭 이벤트
버튼을 눌러서 이벤트를 실행하기 전 어떤 리스트가 선택되었는지 알아야 합니다.
clicked_items와 clicked_items_num이라는 변수를 사용했는데
clicked_items 변수에는 .curselection()함수를 이용해 현재 리스트의 순번을 알아내고
clicked_items_num 변수에 그 숫자를 담았습니다.
clicked_items = List2.curselection()
clicked_items_num = clicked_items[0]
#print(clicked_items_num)
tkinter.messagebox.showinfo('안내',datalist[clicked_items_num])
프로그램 실행 순서
1. 검색창에 입력 후 엔터
2. 검색된 리스트 선택 후 다운로드 버튼 클릭
3. 리스트 클릭 후 버튼을 누르면 회차정보를 볼 수 있다.