我试图能够在输入框中输入信息,然后让一个函数读取该信息并根据输入的内容返回一条语句。每次我运行该程序并尝试运行时,都会显示一条错误消息,提示“类型错误只能将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的值并打印语句。
答案 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()