使用Tkinter和webbrowser的Python 3.2搜索程序

2 投票
1 回答
1971 浏览
提问于 2025-04-18 04:26

正如标题所说,我想做一个带有图形界面的搜索工具。
我希望它的工作方式是:当我点击“搜索”按钮时,打开一个网址,网址是 'https://www.google.com/?gws_rd=cr&ei=qr5cU8GJGMnStAao1YG4BA#q=' 加上我想搜索的关键词。这些关键词我会自己输入。

完整代码:

from tkinter import *
import webbrowser

class MainClass():

    def __init__(self,master):
        self.parent=master
        self.gui()

    def gui(self):
        self.Source=StringVar()
        #This next line I just tried out to use 'what' instead of 'str(self.Source) in def search(self)
        what=Entry(myGUI, textvariable=self.Source).grid(row=9, column=2) 

        label4=Label(myGUI, text='Key words:', fg= 'Black').grid(row=9, column=1)

        button4=Button(myGUI, text="  Search  ", command=self.search).grid(row=18, column=1)


    def search(self):
            webbrowser.open('http://google.com/?gws_rd=cr&ei=qr5cU8GJGMnStAao1YG4BA#q=' + str(self.Source.get))



if __name__ == '__main__':
    myGUI=Tk()
    app=MainClass(myGUI)
    myGUI.geometry("300x100+100+200")
    myGUI.title('Google search')
    myGUI.mainloop()

我遇到的问题在于这一行:

def search(self):
        webbrowser.open('http://google.com/?gws_rd=cr&ei=qr5cU8GJGMnStAao1YG4BA#q=' + str(self.Source.get))

如果我保持这一行不变,然后点击搜索按钮,它会打开谷歌并搜索:'bound method StringVar.get of tkinter.StringVar object at 0x0301EE90'。

如果我保留这一行,但把 str(self.Source.get) 改成 str(self.Source),它又会打开谷歌,但这次搜索的是:PY_VAR0。

如果我直接用 self.Source,点击搜索按钮时会出现错误:“无法隐式转换 'StringVar' 对象为字符串”。

所以我有点困惑,不知道该怎么正确使用这个,请帮帮我。

1 个回答

2

你需要真正调用一下获取方法 self.Source.get(),否则你给 str 的只是这个方法本身,而不是它返回的结果。

所以,整行代码应该是

webbrowser.open('http://google.com/?gws_rd=cr&ei=qr5cU8GJGMnStAao1YG4BA#q=' + str(self.Source.get()))

撰写回答