这是一个简单的搜索和浏览工具。
功能:
- 在输入框中输入关键词,可以搜索已保存的书签网站。
- 选择浏览器后,可通过点击搜索结果打开相应网站。
此工具是为了方便用户快速访问常用网站而开发,希望你使用愉快!
#pyinstaller --onefile --noconsole Search.py
import tkinter as tk
import tkinter.ttk as ttk
import subprocess
import tkinter.messagebox
# 设置窗口背景色为淡蓝色
root = tk.Tk()
root.title("输入搜索内容")
root.configure(bg="#bfefff")
# 创建菜单栏
menubar = tk.Menu(root)
helpmenu = tk.Menu(menubar, tearoff=0)
def about():
about_text = """
这是一个简单的搜索和浏览工具。
功能:
- 在输入框中输入关键词,可以搜索已保存的书签网站。
- 选择浏览器后,可通过点击搜索结果打开相应网站。
"""
tk.messagebox.showinfo(title="帮助文件", message=about_text)
def zzxx():
author_info = """
作者:鹓于
联系方式:[Email:Herryplank@outlook.com]
此工具是为了方便用户快速访问常用网站而开发,希望你使用愉快!
"""
tk.messagebox.showinfo(title="联系方式与相关信息", message=author_info)
helpmenu.add_command(label='帮助文档', command=about)
helpmenu.add_command(label='作者信息', command=zzxx)
menubar.add_cascade(label='帮助', menu=helpmenu)
root.config(menu=menubar)
# 定义浏览器选项及初始选中状态
browser_options = {
'Microsoft Edge': tk.BooleanVar(value=False),
'谷歌浏览器': tk.BooleanVar(value=False),
'联想浏览器': tk.BooleanVar(value=False)
}
websites = {
'哔哩哔哩': 'https://space.bilibili.com/',
'网易': 'https://music.163.com/',
'豆包': 'https://www.doubao.com/',
'百度': 'https://www.baidu.com/'
}
with open('bookmarks_2024_11_4.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
if '<DT><A HREF="' in line:
start_index = line.find('<DT><A HREF="') + len('<DT><A HREF="')
end_index = line.find('"', start_index)
url = line[start_index:end_index]
start_index_name = line.find('>', end_index) + 1
end_index_name = line.find('<', start_index_name)
name = line[start_index_name:end_index_name]
websites[name] = url
def open_in_browser(browser_name, url):
try:
if browser_name == 'Microsoft Edge':
subprocess.Popen(f'start msedge "{url}"', shell=True)
elif browser_name == '谷歌浏览器':
subprocess.Popen(f'start chrome "{url}"', shell=True)
elif browser_name == '联想浏览器':
subprocess.Popen(rf'"C:\Program Files (x86)\Lenovo\SLBrowser\SLBrowser.exe" "{url}"', shell=True)
except Exception as e:
tk.messagebox.showerror(title="错误", message=f"启动浏览器时出现错误:{e}")
def update_listbox(*args):
search_term = entry.get()
listbox.delete(0, tk.END)
for name in websites.keys():
if set(search_term).issubset(set(name)):
listbox.insert(tk.END, name)
if listbox.size() > 0:
listbox.selection_set(0)
def search(event=None):
for browser_name, var in browser_options.items():
if var.get():
selected_index = listbox.curselection()
if selected_index:
query = listbox.get(selected_index)
url = websites[query]
open_in_browser(browser_name, url)
break
root.destroy()
def select_browser(event):
if event.char == '1':
browser_options['Microsoft Edge'].set(not browser_options['Microsoft Edge'].get())
elif event.char == '2':
browser_options['谷歌浏览器'].set(not browser_options['谷歌浏览器'].get())
elif event.char == '3':
browser_options['联想浏览器'].set(not browser_options['联想浏览器'].get())
if any(browser_options.values()):
entry.focus_set()
# 更改GUI布局,将浏览器选择放在同一行并居中
browser_frame = ttk.Frame(root, padding=(10, 5))
browser_frame.pack()
browser_label = ttk.Label(browser_frame, text="选择浏览器(按1、2、3)")
browser_label.grid(row=0, column=1)
# 创建复选框并使用 grid 布局
for index, (browser_name, var) in enumerate(browser_options.items()):
cb = ttk.Checkbutton(browser_frame, text=browser_name, variable=var)
cb.grid(row=1, column=index)
entry = ttk.Entry(root, width=50)
entry.pack(pady=(10, 0))
entry.bind("<KeyRelease>", update_listbox)
entry.bind("<Return>", search)
listbox_frame = ttk.Frame(root)
listbox_frame.pack(pady=(10, 0))
listbox = tk.Listbox(listbox_frame, height=1)
listbox.pack(side=tk.LEFT)
# 添加滑块
scrollbar = ttk.Scrollbar(listbox_frame, orient=tk.VERTICAL)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
listbox.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=listbox.yview)
root.bind("<Key>", select_browser)
root.mainloop()