面倒な新着論文検索をpythonで自動化②
前回はこちら→アプリ画面のイメージまで実際書いたコード前半は以下の通り。なお素人が書いているので、プログラマーの方々から見たら、変数や書き方がイケてない部分は多々あると思うので、その点はお許しを。OS:Windows7Python:Python3.6.2# -*- coding:utf-8 -*-import tkinter as tkimport tkinter.messageboxfrom tkinter import ttkfrom tkinter import StringVar import sysimport datetime# ルートフレームの定義 root = tk.Tk()root.geometry('700x360')root.title("PubMed検索")# 入力画面ラベルの設定label1 = tk.Label(root,text="【検索条件を入力】",font=("",16),height=2)label1.pack(fill="x")label2 = tk.Label(root,text="期間と検索ワードは変更可能です",font=("",12))label2.pack()label3 = tk.Label(root,text="検索中はコピー・ペースト作業を行わないでください",font=("",12))label3.pack()# 期間選択のラベルエントリーの設定 ⇒ スピンボックスにtoday = datetime.datetime.now()one_day = datetime.timedelta(days=1)yeasterday = today - one_dayeight_days = datetime.timedelta(days=8)lastweek = today - eight_daysframe1 = tk.Frame(root,pady=15)frame1.pack()label4 = tk.Label(frame1,font=("",14),text="期間:")label4.pack(side="left")SY = StringVar()SY.set(str(lastweek.year))#初期値を一週間前の年SY_s = tk.Spinbox(frame1,from_=1970,to=str(lastweek.year),width = 7,font=("",12), textvariable=SY, state='readonly')#入力を受け付けないSY_s.pack(side="left")SM = StringVar()SM.set(str(lastweek.month))#初期値を一週間前の月SM_s = tk.Spinbox(frame1,from_=1,to=12,width = 7,font=("",12), textvariable=SM, state='readonly')#入力を受け付けないSM_s.pack(side="left")SD = StringVar()SD.set(str(lastweek.day))#初期値を一週間前の日SD_s = tk.Spinbox(frame1,from_=1,to=31,width = 7,font=("",12), textvariable=SD, state='readonly')#入力を受け付けないSD_s.pack(side="left")label5 = tk.Label(frame1,font=("",14),text=" ~ ")label5.pack(side="left")EY = StringVar()EY.set(str(yeasterday.year))#初期値を昨日の年EY_s = tk.Spinbox(frame1,from_=1970,to=str(yeasterday.year),width = 7,font=("",12), textvariable=EY, state='readonly')#入力を受け付けないEY_s.pack(side="left")EM = StringVar()EM.set(str(yeasterday.month))#初期値を昨日の月EM_s = tk.Spinbox(frame1,from_=1,to=12,width = 7,font=("",12), textvariable=EM, state='readonly')#入力を受け付けないEM_s.pack(side="left")ED = StringVar()ED.set(str(yeasterday.day))#初期値を一週間前の日ED_s = tk.Spinbox(frame1,from_=1,to=31,width = 7,font=("",12), textvariable=ED, state='readonly')#入力を受け付けないED_s.pack(side="left")#検索キーワードのラベルエントリーの設定search_value = ['python','goldfish','tax','cat', 'meteorite','space','tropical fish','mind']#あなたが検索したいワードをどうぞword0,word1,word2,word3,word4,word5,word6,word7 = search_valueword8 = ""frame2 = tk.Frame(root,pady=2)frame2.pack()label6 = tk.Label(frame2,font=("",14),text="検索ワード:")label6.pack(side="left")entry0 = tk.Entry(frame2,font=("",14),justify="center",width=12)entry0.insert(tkinter.END,word0)entry0.pack(side="left")entry1 = tk.Entry(frame2,font=("",14),justify="center",width=12)entry1.insert(tkinter.END,word1)entry1.pack(side="left")entry2 = tk.Entry(frame2,font=("",14),justify="center",width=12)entry2.insert(tkinter.END,word2)entry2.pack(side="left")frame3 = tk.Frame(root,pady=2)frame3.pack()label7 = tk.Label(frame3,font=("",14),text=" ")label7.pack(side="left")entry3 = tk.Entry(frame3,font=("",14),justify="center",width=12)entry3.insert(tkinter.END,word3)entry3.pack(side="left")entry4 = tk.Entry(frame3,font=("",14),justify="center",width=12)entry4.insert(tkinter.END,word4)entry4.pack(side="left")entry5 = tk.Entry(frame3,font=("",14),justify="center",width=12)entry5.insert(tkinter.END,word5)entry5.pack(side="left")frame4 = tk.Frame(root,pady=2)frame4.pack()label8 = tk.Label(frame4,font=("",14),text=" ")label8.pack(side="left")entry6 = tk.Entry(frame4,font=("",14),justify="center",width=12)entry6.insert(tkinter.END,word6)entry6.pack(side="left")entry7 = tk.Entry(frame4,font=("",14),justify="center",width=12)entry7.insert(tkinter.END,word7)entry7.pack(side="left")entry8 = tk.Entry(frame4,font=("",14),justify="center",width=12)entry8.pack(side="left")entry8.insert(tkinter.END,word8)frame5 = tk.Frame(root,pady=2)frame5.pack()label9 = tk.Label(frame5,font=("",14),text="-------------------------------------------------")label9.pack(side="top")#検索ワードを一括クリアする関数def clear_all(): entry0.delete(0,tkinter.END) entry1.delete(0,tkinter.END) entry2.delete(0,tkinter.END) entry3.delete(0,tkinter.END) entry4.delete(0,tkinter.END) entry5.delete(0,tkinter.END) entry6.delete(0,tkinter.END) entry7.delete(0,tkinter.END)上記コードで、アプリ画面に表示する文字や期間設定用のスピンボックス、検索ワードのエントリーと一括クリア関数を設定した。ボタン作成やメインループは最後にしているので、上記コードだけを実行するとエラーするので注意。長くなったので、コード中盤以降は次回。次回は、実際にPubMedにアクセスして、論文検索するよ!→次回はこちら(面倒な新着論文検索をpythonで自動化③)▼初心者がTkinterを作るなら、この本から始めよう。にほんブログ村