将文本放入输入框并进行搜索的方法?

时间:2019-04-14 18:57:14

标签: python-3.x tkinter

我试图能够在输入框中输入信息,然后让一个函数读取该信息并根据输入的内容返回一条语句。每次我运行该程序并尝试运行时,都会显示一条错误消息,提示“类型错误只能将str(而不是int)连接到str”

我尝试将文本条目设置为stringvar,然后将其作为函数的一部分进行调用以搜索该条目变量,但似乎没有任何改变。

这是我的代码:

E = Entry(top,text='var',textvariable=var,bd=5)
def faultCodes():
    x = E.get()
    for x in E:
        if x == 500 or x == 514:
            print("Follow fault code 9621F4A4.")
        else:
            print("Enter a fault code.")
    label = Label(text=x).place(x=0,y=300)

我正在寻找的结果是用户可以输入500或514的值并打印语句。

1 个答案:

答案 0 :(得分:1)

您可以创建按钮来运行代码,该代码将从var.get()E.get()获取文本并执行操作

E = Entry(top, text='var', textvariable=var, bd=5)
E.pack()

B = Button(top, text='OK', command=faultCodes)
B.pack()

def faultCodes():
    entry_text = var.get()

    if entry_text == "500" or entry_text == "514":
         print("Follow fault code 9621F4A4.")
    else:
         print("Enter a fault code.")

    label = Label(top, text=entry_text)
    label.pack()

或者您可以在<Return>中按Entry时将Enter绑定到Entry来运行功能。 Tkinter将以event作为参数运行函数,因此函数必须获取此参数。

E = Entry(top, text='var', textvariable=var, bd=5)
E.pack()

E.bind('<Return>', faultCodes)

def faultCodes(event):
    entry_text = var.get()

    if entry_text == "500" or entry_text == "514":
         print("Follow fault code 9621F4A4.")
    else:
         print("Enter a fault code.")

    label = Label(top, text=entry_text)
    label.pack()

如果使用event=None

,甚至可以将两种方法都使用相同的功能

完整的示例

from tkinter import *

def faultCodes(event=None):
    entry_text = var.get()

    if entry_text == "500" or entry_text == "514":
         print("Follow fault code 9621F4A4.")
    else:
         print("Enter a fault code.")

    label = Label(top, text=entry_text)
    label.pack()


top = Tk()

var = StringVar()
E = Entry(top, text='var', textvariable=var, bd=5)
E.pack()

E.bind('<Return>', faultCodes)

B = Button(top, text='OK', command=faultCodes)
B.pack()

top.mainloop()

顺便说一句:var.get()给出了字符串,所以我将其与字符串“ 500”,“ 514”进行比较-而不是整数500、514。


编辑:带有Label

的示例
from tkinter import *

# --- function ---

def faultCodes(event=None):
    entry_text = var.get()

    if entry_text == "500" or entry_text == "514":
         label['text'] = "Follow fault code 9621F4A4."
    else:
         label['text'] = "Enter a fault code."

# --- main ---

top = Tk()

var = StringVar()
E = Entry(top, text='var', textvariable=var, bd=5)
E.pack()

E.bind('<Return>', faultCodes)

B = Button(top, text='OK', command=faultCodes)
B.pack()

label = Label(top, text='')
label.pack()

top.mainloop()

编辑:带有字典的示例

from tkinter import *

data = {
    "500": "Follow fault code 9621F4A4.",
    "514": "Follow fault code 9621F4A4.",
    # ...add more ...
}

# --- function ---

def faultCodes(event=None):
    entry_text = var.get()

    if entry_text in data:
         label['text'] = data[entry_text]
    else:
         label['text'] = "Enter a fault code."

# --- main ---

top = Tk()

var = StringVar()
E = Entry(top, text='var', textvariable=var, bd=5)
E.pack()

E.bind('<Return>', faultCodes)

B = Button(top, text='OK', command=faultCodes)
B.pack()

label = Label(top, text='')
label.pack()

top.mainloop()