分享
三行代码  ›  专栏  ›  技术社区  ›  Baconflip

重置Tkinter中的用户输入 - Reset user input in tkinter

  •  0
  • Baconflip  · 技术社区  · 1 周前

    我想用Tkinter写个剧本。很高兴知道:我对python有点陌生。 该脚本接受用户输入以在服务器上查找用户输入。我第一次运行脚本时,它运行得很好,但是当试图找到新的东西时,脚本会给我一个错误: AttributeError: 'str' object has no attribute 'get' 所以我猜用户输入/按钮需要重置一些方式。我不明白为什么第一次成功而不是第二次。 我试图找到一个好办法来做这件事,但我失败了。请拦住一个新手。

    import requests, re, urllib.request
    import tkinter as tk
    from tkinter import *
    from tkinter import ttk
    
    window = Tk()
    window.title("Find answer")
    ttk.Label(window, text="What you wanna find: ").pack()
    stuff = ttk.Entry(window)
    stuff.pack()
    frame = Frame(window, width=200, height=50)
    frame.pack()
    servers = ["192.168.8.3", "192.68.8.2"]
    
    def find():
        global stuff
        stuff = stuff.get()
        stuff = stuff.lower()
        for server in servers:
            f = urllib.request.urlopen("http://"+server+"/find")
            result = f.read().decode('utf-8')
            lab = tk.Label(frame,text="server")
            lab.pack()
            print(server)
    
    def clicked_start():
       find()   
    
    start_btn = ttk.Button(text="Find the stuff", command=clicked_start)
    start_btn.pack(fill="none")
    window.mainloop()
    
    1 回复  |  直到 1 周前
        1
  •  0
  •   pok fung Chan    1 周前

    我想原因是你重新定义了

    global stuff
    stuff = stuff.get()
    stuff = stuff.lower()
    

    变量最初是一个entry对象,您可以将其重新定义为一个字符串

    尝试使用另一个变量(如

    global stuff
    stuffcontent = stuff.get()
    stuffcontent = stuffcontent.lower()