Python 3.x 将文本放入输入框并搜索它的方法?

Python 3.x 将文本放入输入框并搜索它的方法?,python-3.x,tkinter,Python 3.x,Tkinter,我试图将信息输入到输入框中,然后让函数读取信息并根据输入的内容返回语句。每次我运行程序并尝试它时,我都会遇到一个错误,上面写着“类型错误只能将str(而不是“int”)连接到str” 我尝试将文本条目设置为stringvar,然后将其作为函数的一部分调用以搜索该条目变量,但它似乎没有改变任何东西 这是我的代码: E = Entry(top,text='var',textvariable=var,bd=5) def faultCodes(): x = E.get() for x i

我试图将信息输入到输入框中,然后让函数读取信息并根据输入的内容返回语句。每次我运行程序并尝试它时,我都会遇到一个错误,上面写着“类型错误只能将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的值并打印语句。

您可以创建按钮来运行代码,该代码将从
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()
或者,当您在
Entry
中按
Enter
时,您可以将
绑定到
Entry
以运行函数。Tkinter将以
事件
作为参数运行函数,因此函数必须获取此参数

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


编辑:带有
标签的示例

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()
从tkinter导入*
#---功能---
def故障代码(事件=无):
条目_text=var.get()
如果条目_text==“500”或条目_text==“514”:
标签['text']=“遵循故障代码9621F4A4。”
其他:
标签['text']=“输入故障代码。”
#---梅因---
top=Tk()
var=StringVar()
E=条目(顶部,text='var',textvariable=var,bd=5)
E.包装()
E.bind(“”,故障代码)
B=按钮(顶部,文本='OK',命令=故障代码)
B.包装()
标签=标签(顶部,文本=“”)
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()
从tkinter导入*
数据={
“500”:“遵循故障代码9621F4A4。”,
“514”:“遵循故障代码9621F4A4。”,
#…添加更多。。。
}
#---功能---
def故障代码(事件=无):
条目_text=var.get()
如果在数据中输入文本:
标签['text']=数据[输入\文本]
其他:
标签['text']=“输入故障代码。”
#---梅因---
top=Tk()
var=StringVar()
E=条目(顶部,text='var',textvariable=var,bd=5)
E.包装()
E.bind(“”,故障代码)
B=按钮(顶部,文本='OK',命令=故障代码)
B.包装()
标签=标签(顶部,文本=“”)
label.pack()
top.mainloop()

错误的完整回溯是什么?它在哪一行?鉴于
E
是一个小部件,您认为
E
中x的
将做什么?在cget Bryan中,第1489行的Rassar错误-我原以为为
添加
for
循环将允许此代码作为日志运行,因为输入框中有信息,但我现在意识到可能不需要。我只是尝试取出它并运行代码-我不再出现故障,但它也不会运行
if
循环。它只是在提交按钮上打印输入的信息。哪一行是1489?始终放置完整的错误消息(完全回溯)有问题-不在评论中。有许多有用的信息。它比第1489行的text
error
添加一个最小的可执行示例更有用。请尝试这些方法,但每次我在输入框中输入内容并单击按钮时,它都返回与我作为标签输入的值相同的值。我假设这是因为se函数中的标签设置为
label=label(text=entry\u text)
。如何让它返回所需的语句作为标签?如果需要标签中的不同文本,请在
label(text=“different text”)中使用不同的文本
我的问题是它没有在函数中打印
if
循环中的语句。如果我在输入框中输入500作为值,它应该打印
遵循故障代码9621F4A4。
但它只是重复输入文本变量。我如何才能使函数中的循环实际正常工作?正如我所说的那样请使用
Label(text=“Follow fault code 9621F4A4”)
您的意思是像
Label=Label(text=“Follow fault code 9621F4A4”)那样在循环中分配标签吗
,因为这会返回一个在赋值之前引用标签的错误。如果您的意思是将标签赋值为循环之外的标签,那么它的执行效果就不符合我的预期,因为无论输入什么值,它都将始终显示该标签。
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()