首页 > 解决方案 > 在 tkinter 中重置用户输入

问题描述

我正在尝试在 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()

标签: pythonpython-3.xtkinter

解决方案


我想原因是你重新定义了东西

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

该变量最初是一个条目对象,您将其重新定义为字符串

尝试使用另一个变量,例如

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

推荐阅读