Как я могу создать кнопку, которая добавляет символ к тексту метки, а затем проверяет текст?

#python #python-3.x #tkinter #label

Вопрос:

Я пытаюсь заставить некоторые кнопки добавлять текст к метке, а затем заставить другую кнопку проверять текст метки, чтобы затем создать событие. Это что-то вроде написания ключа с помощью символов, и если вы напишете правильный, произойдет событие. Попробовал посмотреть и узнал, что это можно легко сделать с помощью тз.Запись, но проблема в том, что я не хочу, чтобы текст можно было изменять, за исключением кнопок. вот почему я поместил его на Этикетку. помогите мне, пожалуйста?

 import tkinter as tk


def a():
    trad.config(text="a")
    
    #global i
    #sal.insert(i, valor)
    #i  = 1



ventana=tk.Tk()
ventana.title("Bosque")
ventana.geometry('900x800')
ventana.resizable(0,0)


sal = "¿Qué camino debería tomar?"

trad = tk.Label(ventana,text=sal,wraplength=200,anchor="n")
trad.config(bg="#137420", fg="#E59866",font=("Verdana",10,"bold","italic"),width=25, height=9)
trad.place(x=660,y=160)

#caja = tk.Entry(ventana, width=37)
#caja.place(x=660,y=200)


boton = tk.Button(text="  ↑  ",font=("Verdana",17), command=a)
boton.config(bg="#135C3F", fg="#D7D731")
boton.place(x=745,y=330)

boton1 = tk.Button(text="  ↓  ",font=("Verdana",17))
boton1.config(bg="#135C3F", fg="#D7D731")
boton1.place(x=745,y=423)

boton2 = tk.Button(text="  Ir  ",font=("Verdana",16))
boton2.config(bg="#135C3F", fg="#D7D731")
boton2.place(x=746,y=379)

boton3 = tk.Button(text=" → " ,font=("Verdana",17))
boton3.config(bg="#135C3F", fg="#D7D731")
boton3.place(x=812,y=376)

boton4 = tk.Button(text=" ← ",font=("Verdana",17))
boton4.config(bg="#135C3F", fg="#D7D731")
boton4.place(x=686,y=376)

ventana.mainloop()
 

Комментарии:

1. trad.config(text=trad["text"] "a") или trad["text"] = "a" .

2. @acw1668 спасибо 😀

Ответ №1:

В принципе, все, что вы можете сделать, это передать значение в команде при нажатии кнопки и изменить текст метки в соответствии с этим. Для передачи аргумента в команде кнопок вы можете использовать lambda

 import tkinter as tk


def a(value):
    if value==1:
        trad.config(text="a")
    elif value==2:
        trad.config(text="b")
    elif value==3:
        trad.config(text="c")
    elif value==4:
        trad.config(text="d")
    elif value==5:
        trad.config(text="e")
    #global i
    #sal.insert(i, valor)
    #i  = 1



ventana=tk.Tk()
ventana.title("Bosque")
ventana.geometry('900x800')
ventana.resizable(0,0)


sal = "¿Qué camino debería tomar?"

trad = tk.Label(ventana,text=sal,wraplength=200,anchor="n")
trad.config(bg="#137420", fg="#E59866",font=("Verdana",10,"bold","italic"),width=25, height=9)
trad.place(x=660,y=160)

#caja = tk.Entry(ventana, width=37)
#caja.place(x=660,y=200)


boton = tk.Button(text="  ↑  ",font=("Verdana",17), command=lambda:a(1))
boton.config(bg="#135C3F", fg="#D7D731")
boton.place(x=745,y=330)

boton1 = tk.Button(text="  ↓  ",font=("Verdana",17), command=lambda:a(2))
boton1.config(bg="#135C3F", fg="#D7D731")
boton1.place(x=745,y=423)

boton2 = tk.Button(text="  Ir  ",font=("Verdana",16), command=lambda:a(3))
boton2.config(bg="#135C3F", fg="#D7D731")
boton2.place(x=746,y=379)

boton3 = tk.Button(text=" → " ,font=("Verdana",17), command=lambda:a(4))
boton3.config(bg="#135C3F", fg="#D7D731")
boton3.place(x=812,y=376)

boton4 = tk.Button(text=" ← ",font=("Verdana",17), command=lambda:a(5))
boton4.config(bg="#135C3F", fg="#D7D731")
boton4.place(x=686,y=376)

ventana.mainloop()
 

Затем позже, чтобы проверить текст, используйте либо trad["text"] , либо (предпочтительно в основном) используйте trad.cget("text") , чтобы получить его значение.

Используйте такие методы, упомянутые выше, чтобы сначала получить текст метки, а затем добавить к нему новый текст перед настройкой текста метки в вашей функции-

 def a(value):
  textInLabel = trad.cget("text")   #get the text already present in label
  if value==1:
     newText = textInLabel   " a"      #set the text to add in Label
     trad.config(text=newText)         #add the new text to the label's text
   elif...
 

Комментарии:

1. спасибо вам :). как я могу заставить каждый ключ добавлять символ в метку, не заменяя его?

2. Отредактировал ответ с пояснением к вашему запросу.