#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. Отредактировал ответ с пояснением к вашему запросу.