#浏览器快速调用小应用

 这是一个简单的搜索和浏览工具。

    功能:
    - 在输入框中输入关键词,可以搜索已保存的书签网站。
    - 选择浏览器后,可通过点击搜索结果打开相应网站。

此工具是为了方便用户快速访问常用网站而开发,希望你使用愉快!

 

#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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值