python-3.x - 将文本带入输入框并搜索的方法?
问题描述
我试图能够在输入框中输入信息,然后让一个函数读取它并根据输入的内容返回一个语句。每次我运行程序并尝试它时,我都会遇到一个失败,提示“类型错误只能将 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()
或者您可以在按下时绑定<Return>
到Entry
运行功能。Tkinter 将使用as 参数运行函数,因此函数必须获取此参数。Enter
Entry
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()
推荐阅读
- mysql - 使用 SQL Workbench/j 到 MySQL 的 SSL 连接
- .net - 从 .NET 自动化 Excel 以提示用户选择单个单元格,然后关闭工作簿并立即返回单元格引用
- azure - 在 Azure IoT 注册表中按标记值查询时出错
- mysql - 如何将 UNION 与两个具有 ORDER BY 的语句一起使用
- python-3.x - 重新启动气流调度程序
- javascript - 如何从动态加载的脚本运行函数
- python - Python Pandas - 聚合和计数
- html - 谷歌图表表格 - 堆叠列
- file - Ionic 4:如何从相机(@ionic-native/camera)FILE_URI 制作文件(@ionic-native/file)
- hbase - HBASE - 如何在 HBASE 中使用 SingleColumnValueFilter 应用“LIKE”过滤器操作?