带有webbrowser模块的Tkinter GUI应用程序问题

2024-04-29 01:09:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个简单的GUI应用程序,使用web浏览器python模块打开程序和网站,但当尝试搜索时,它不会打开web浏览器,但会打开应用程序,有人能帮我吗?代码:

import tkinter as tk 
import webbrowser
import os

def todo(TODO):
    try:
        if TODO== 'pycharm':
            os.startfile("C:\\Program Files\\JetBrains\\PyCharm Community Edition 2019.3.3\\bin\\pycharm64.exe")
        elif TODO== 'sublime':
            os.startfile("C:\\Program Files\\Sublime Text 3\\sublime_text.exe")
        elif '.py'or '.txt' or '.csv' or '.ppt' in TODO:
            os.open('{}'.format(TODO,os.O_RDWR|os.O_CREAT))
            os.startfile('{}'.format(TODO))
        elif 'search' in TODO:
            url='http://google.com/search?q='+TODO.replace('search','')
            webbrowser.open(url)
        elif 'facebook' in TODO:
            webbrowser.open('https://www.facebook.com/')
        elif 'instagram' in TODO:
            webbrowser.open('https://www.instagram.com/')
        else:
            pass
    except :
        pass

root= tk.Tk()
root.title('To-Do GUI')


entry = tk.Entry(root, font=40, width=35)
entry.grid(row=0,column=0)
entry.focus()

button = tk.Button(root, text="GO", font=40, command=lambda: todo(entry.get()))
button.grid(row=0 ,column=4)

root.mainloop()

Tags: orinimportcomsearchosguiroot
1条回答
网友
1楼 · 发布于 2024-04-29 01:09:21

问题根本不在于webbrowser模块,而是因为这行代码:

elif '.py' or '.txt' or '.csv' or '.ppt' in TODO:

它总是True,需要编写。下面是一个简单的方法:

elif '.py' in TODO or '.txt' in TODO or '.csv' in  TODO or '.ppt' in TODO:

你看不出真正的错误是什么,因为你有一个“裸的”except:passtry:,它隐藏了所有错误,包括那些你从未想到的语法错误。(实际上,还有另一个不同的问题你还没有遇到。)

为了避免这种情况,至少在开发和调试期间,我建议您至少将其更改为:

except Exception as exc:
    print('Exception occurred: {}'.format(exc))
    pass

或者更好:

except:
    traceback.print_exc()
    pass

所以你会得到一些线索,知道为什么它没有像你预期的那样运行

更新:

这里有一种更高级的写作方式elif

elif any(ext in TODO for ext in ('.py', '.txt', '.csv', '.ppt')):

相关问题 更多 >