以前作ったすぐにググれるアプリに機能追加。
環境など
前回の記事と同じレベルで実装を行っています。
主要な要素は以下の通りです。
・言語:python(3.7.6)
・IDE:Spyder
・GUI実装:tkinter
・パッケージ化:pyinstaller
詳細は前回記事を参照ください。
アプリソース
とりあえずやりたいとこをできる実装でやっているので、きれいな感じではありません。
他にもいろいろやり方はあると思います。
こんな感じのソースをpyinstallerで実行ファイル化しました。
# Tkinterライブラリのインポート import tkinter as tk import tkinter.ttk as ttk # webbrowserライブラリのインポート import webbrowser BROWSER_EDGE = "Microsoft Edge" BROWSER_CHROME = "Google Chrome" BROWSER_IE = "Internet Explorer" SITE_G = "Google" SITE_Y = "Youtube" SITE_T = "Twiiter" class app(tk.Frame): def callback(event): # テキストボックス取得 search_word = txt.get() # 入力がある場合には検索する if search_word != "": # 検索サイトの選択 search_site = combo_search.get() if search_site == SITE_Y: # YOUTUBEの検索 url = 'https://www.youtube.com/results?search_query=' + search_word elif search_site == SITE_T: # ツイッターの検索 url = 'https://twitter.com/search?q='+ search_word + '&src=typed_query' else: # グーグル検索(デフォルト) url = 'https://www.google.co.jp/search?q=' + search_word # ブラウザの選択 select_browser = combo.get() if select_browser == BROWSER_IE: # IEで検索 webbrowser.get('"c:\program files\internet explorer\iexplore.exe" %s &').open(url) elif select_browser == BROWSER_CHROME: # Chromeで検索 webbrowser.get('"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" %s &').open(url) else: # Edgeで検索(デフォルト) webbrowser.get('"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" %s &').open(url) txt.delete(0, tk.END) def btn(): app.callback root = tk.Tk() root.attributes("-topmost", True) root.title("すぐぐる") root.geometry("420x60") label = tk.Label(root, text="") label.pack() # ブラウザ選択コンボボックスの作成 combo = ttk.Combobox(root, state='readonly') # リストの値を設定 combo["values"] = (BROWSER_EDGE,BROWSER_IE,BROWSER_CHROME) combo.current(0) combo.place(x=10, y=5) # 検索サイト選択コンボボックスの作成 combo_search = ttk.Combobox(root, state='readonly',width=12) # リストの値を設定 combo_search["values"] = (SITE_G,SITE_Y,SITE_T) combo_search.current(0) combo_search.place(x=160, y=5) # テキストボックスの作成 txt = tk.Entry(width=55) txt.place(x=10, y=30) # 検索ボタンの作成 btn = tk.Button(root, text="検索", command=btn, height=1,width=8) btn.place(x=350, y=28) root.bind('<Return>', app.callback) root.mainloop()
アイコンをつけるには以下のようにコマンドオプションを添える。
pyinstaller sggr_ap.py --onefile --noconsole --icon=sggr_ap.ico
すぐぐる
使い方
アプリ本体のショートカットをデスクトップ上に作成しています。
アプリを普通にダブルクリックすると起動します。
検索したい条件を入力する。
①ブラウザを選択
②サイトを選択
③検索ワードを入力してエンターか検索ボタン押下
対象ブラウザで検索が行われます。
仕様・機能
一部は前回の記事からの再掲。
・テキストボックスは常に前面に表示される。
・対象のブラウザは以下の3種。
Microsoft Edge(Chromium版)
Google Chrome
Internet Explorer
・対象のサイトは以下の3種。
Google
Youtube
Twiiter
・初期表示はデフォルトでブラウザが「空欄」(マシンのデフォルトブラウザ)、検索サイトは「Google」。
・エンター押下か検索ボタン押下により検索が実行される。
・ブラウザが開かれていない場合には新しいウィンドウを開く。
・すでに開かれている場合は一番最近に使用したウィンドウに対して新しいタブを開く。
・検索ワードは一度検索したらテキストボックスから削除される。
検索エンジンに関しては圧倒的Google信者なのでとりあえずGoogleのみ。
他のサイトはすぐにはあまり思いつきませんでした。
不具合・未実装部分
■firefox
ブラウザについてはfirefoxも試したが他のブラウザと同様の実装方法では機能しなかったため外した。
■ブラウザのインストール環境対応
各ブラウザの実行ファイルを絶対パスで指定しているため、もしインストール構成が違った場合全く機能しない。
■Internet Explorer
YoutubeとTwiiterの検索が正常に行えない不具合がある。多分文字コード絡みが原因。
■初期表示検索機能が固定
初期表示はブラウザが「空欄」、検索サイトが「Google」で固定。
次回起動時に記録やユーザごとのデフォルト設定はできない。
■サイト設定などはできない
検索サイトはアプリに埋め込んだもの固定。
現在の実装方法だと、検索クエリーを実際に検索したURLから固定で埋め込んでいるため後から追加などはできない。
本当はここが設定できればだいぶ幅が広がるが。。。
ソースコードから修正する必要があるけど、実装方法次第で検索以外にも使えるようにはできるので自分のよく使うサイトなどをうまく組み込めたら多少は使えるようになるものかな。
どうしてもユーザビリティが低い。
・ソース
sggr_ap/sggr_ap.py at master · wantanblog/sggr_ap · GitHub
・アプリ本体