Python 3.x 将文本放入输入框并搜索它的方法?
我试图将信息输入到输入框中,然后让函数读取信息并根据输入的内容返回语句。每次我运行程序并尝试它时,我都会遇到一个错误,上面写着“类型错误只能将str(而不是“int”)连接到str” 我尝试将文本条目设置为stringvar,然后将其作为函数的一部分调用以搜索该条目变量,但它似乎没有改变任何东西 这是我的代码: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
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行的texterror
添加一个最小的可执行示例更有用。请尝试这些方法,但每次我在输入框中输入内容并单击按钮时,它都返回与我作为标签输入的值相同的值。我假设这是因为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()