Tkinter小專案:用Python寫一個地址收藏管理工具,迅速提高你的工作效率
阿新 • • 發佈:2018-12-15
如何管理雜亂的電腦桌面和一大堆的瀏覽器收藏網址?我用python寫了一個工具,迅速提高工作效率。
工作了一段時間發現,電腦桌面上已經滿屏的常用軟體、常用專案資料夾的快捷方式,一大堆的常用文件,瀏覽器上收藏的工作網址更是有100+,通常想開啟一個文件、網址要尋找半天,有沒有方法可以集中管理這些地址呢? 我用python tkinter + webbrowser寫了一個地址收藏工具
功能:
- 關鍵字搜尋,字母不區分大小寫。
- 新增:URL網址,本地軟體路徑,本地文件路徑
- 雙擊/敲回車鍵快捷開啟
- 選中刪除
- 修改:可使用新增功能,支援同名覆蓋
原理:
-
匯入庫 tkinter,webbrowser均為python標準庫,不需要另外安裝
import tkinter as tk import json import webbrowser from tkinter import messagebox from tkinter import *
-
使用python自帶介面開發庫tkinter開發基本介面
if __name__ == '__main__': root = Tk() # 構造窗體 root.title('Open Everything') # 標題 root.iconbitmap('opentool.ico') # 載入圖示 root.resizable(0,0) # 固定視窗大小
-
讀取json檔案,載入資料到Listbox
self.urllist = self.readUrlList() # 獲取列表 if self.urllist: self.createWidgets() self.mainloop() else: messagebox.showinfo('Error','讀取地址列表失敗!請檢視openlist.json檔案是否存在並且格式正確。')
# 載入地址列表 for item in self.urllist: self.listbox.
-
新增事件處理
def doevent(self): self.keywdbox.bind("<Return>",self.showlist) # 按回車鍵,顯示搜尋結果 self.keywdbox.bind("<BackSpace>",self.showlistAll) self.listbox.bind('<Double-Button-1>',self.openurl) # 雙擊開啟地址 self.listbox.bind('<Return>',self.openurl) # 按Enter鍵開啟地址
-
使用
webbrowser.open(url)
方法開啟路徑. 這個方法比較強大,如果是http地址,會直接在瀏覽器中開啟,如果是本地地址,會直接開啟本地的軟體/資料夾/文件等def openurl(self,event): urlname = self.listbox.get(self.listbox.curselection()) url = self.urllist[urlname] # 根據key值獲取對應url值 if url is not None and url != '': webbrowser.open(url) else: messagebox.showinfo('Error !', '開啟地址失敗!地址為空。')
-
搜尋功能 搜尋功能實現比較簡單,遍歷字典key值,判斷關鍵字是否存在key中
def showlist(self, event): keywd = self.keywdbox.get().strip() if keywd: self.listbox.delete(0, END) # 先做清空列表動作 for item in self.urllist: if keywd.lower() in item.lower(): # 判斷關鍵字是否存在字典key中 self.listbox.insert(END, item) # 載入搜尋結果
-
退出軟體時重新儲存json檔案
def savaUrllist(self): with open('openlist.json', 'w', encoding='utf-8') as f: json.dump(self.urllist,f, ensure_ascii=False, indent=2) print('檔案儲存成功。')
-
打包軟體 win下使用pyinstaller Mac下使用py2app
使用教程
更新 – 20180916 Thinks for @CYDROM’s pull requests
更新點:
- 增加實時查詢:輸入中開始查詢;
- 拼音查詢,拼音首字母查詢:全拼或拼音首字母查詢;
- 安裝第三方包
pip install pypinyin
- 安裝第三方包
from pypinyin import Style
import pypinyin
......
def showlist(self, event):
keywd = self.keywdbox.get().strip()
if keywd:
self.listbox.delete(0, END)
# print(urllist)
for item in self.urllist:
if (keywd.lower() in item.lower()) or (keywd.lower() in pypinyin.slug(item.lower(), separator='') or
(keywd.lower() in pypinyin.slug(item.lower(),style=Style.FIRST_LETTER,separator=''))):
self.listbox.insert(END, item) # 載入搜尋結果
else:
self.listbox.delete(0, END)
for item in self.urllist:
self.listbox.insert(END, item) # 空字元時,載入所有列表
- 方向鍵快捷鍵:輸入框中按 Down鍵,進入條目區,條目區按下Left鍵返回搜尋框;
優化:
- 開啟時游標定位到搜尋框
- 開啟新增子視窗時,游標定位到輸入框,並使根視窗失效(不可點選)
PS:本文首發於 [Python中文社群] 公眾號,現開通了個人公眾號,故重發於此。 歡迎關注。