Способ ввода текста в поле ввода и его поиска? - PullRequest
1 голос
/ 14 апреля 2019

Я пытаюсь иметь возможность ввести информацию в поле ввода, а затем сделать так, чтобы функция прочитала ее и вернула утверждение в зависимости от того, что было введено.Каждый раз, когда я запускаю программу и пробую ее, я получаю сообщение об ошибке «Ошибка типа может объединить только 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 Ответ

1 голос
/ 14 апреля 2019

Вы можете создать кнопку для запуска кода, который будет получать текст из 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...