Как сделать чтобы текст из lable редактировался с помощью нажатия кнопки
Чтобы get. извлекала текст из поля entry и обновляла на кнопку редактирвоать 
from tkinter import *
root = Tk()
root.title("Данные")
root.geometry("1280x200")
root.resizable(False, False)
redname1 = StringVar()
redname2 = StringVar()
redname3 = StringVar()
redname4 = StringVar()
redname5 = StringVar()
def namebas():
name2 = Label(text=get.redname1())
name1.grid(row=0, column=1, padx=5, pady=5)
name2 = Label(text=get.redname2())
name2.grid(row=1, column=1, padx=5, pady=5)
name3 = Label(text=get.redname3())
name3.grid(row=2, column=1, padx=5, pady=5)
name4 = Label(text=get.redname4())
name4.grid(row=3, column=1, padx=5, pady=5)
name5 = Label(text=get.redname5())
name5.grid(row=4, column=1, padx=5, pady=5)
name1red = Entry(textvariable=redname1)
name1red.grid(row=0, column=2, padx=5, pady=5)
name2red = Entry(textvariable=redname2)
name2red.grid(row=1, column=2, padx=5, pady=5)
name3red = Entry(textvariable=redname3)
name3red.grid(row=2, column=2, padx=5, pady=5)
name4red = Entry(textvariable=redname4)
name4red.grid(row=3, column=2, padx=5, pady=5)
name5red = Entry(textvariable=redname5)
name5red.grid(row=4, column=2, padx=5, pady=5)
name1 = Label(text=redname1)
name1.grid(row=0, column=1, padx=5, pady=5)
name2 = Label(text=redname2)
name2.grid(row=1, column=1, padx=5, pady=5)
name3 = Label(text=redname3)
name3.grid(row=2, column=1, padx=5, pady=5)
name4 = Label(text=redname4)
name4.grid(row=3, column=1, padx=5, pady=5)
name5 = Label(text=redname5)
name5.grid(row=4, column=1, padx=5, pady=5)
message_button1 = Button(text="Редактировать", command=namebas)
message_button1.grid(row=0,column=3, padx=5, pady=5, sticky="e")
message_button2 = Button(text="Редактировать", command=namebas)
message_button2.grid(row=1,column=3, padx=5, pady=5, sticky="e")
message_button3 = Button(text="Редактировать", command=namebas)
message_button3.grid(row=2,column=3, padx=5, pady=5, sticky="e")
message_button4 = Button(text="Редактировать", command=namebas)
message_button4.grid(row=3,column=3, padx=5, pady=5, sticky="e")
message_button5 = Button(text="Редактировать", command=namebas)
message_button5.grid(row=4,column=3, padx=5, pady=5, sticky="e")
root.mainloop()
Ответы (1 шт):
В функции
namebas()вы первой строкой объявляетеname2, хотя как я понимаю, там должно бытьname1Вместо того, чтобы брать значение из переменных, я бы порекомендовал брать значения прямо из
Entry. То есть, вместоget.redname1()делать так -name1red.get()Также проблема в том, что при нажатии на кнопку, если у вас поля
Entryокажутся пустыми, то ваши текстовые меткиLabelтоже примут пустое значение. Поэтому вам нужно при нажатии на конкретную кнопку отправлять в функцию определенный ключ, чтобы менялось только одно значение.
Добавим передачу аргумента в функцию (команда при нажатии кнопки):
command = lambda x=1: namebas(x)
Добавим в функцию проверку кнопки:
def namebas(x):
if x == 1:
name1['text'] = name1red.get()
if x == 2:
name2['text'] = name2red.get()
if x == 3:
name3['text'] = name3red.get()
if x == 4:
name4['text'] = name4red.get()
if x == 5:
name5['text'] = name5red.get()
Все это, конечно, не оптимизировано, но думаю идея ясна.
Полный код:
from tkinter import *
root = Tk()
root.title("Данные")
root.geometry("1280x200")
root.resizable(False, False)
def namebas(x):
if x == 1:
name1['text'] = name1red.get()
if x == 2:
name2['text'] = name2red.get()
if x == 3:
name3['text'] = name3red.get()
if x == 4:
name4['text'] = name4red.get()
if x == 5:
name5['text'] = name5red.get()
name1red = Entry()
name1red.grid(row=0, column=2, padx=5, pady=5)
name2red = Entry()
name2red.grid(row=1, column=2, padx=5, pady=5)
name3red = Entry()
name3red.grid(row=2, column=2, padx=5, pady=5)
name4red = Entry()
name4red.grid(row=3, column=2, padx=5, pady=5)
name5red = Entry()
name5red.grid(row=4, column=2, padx=5, pady=5)
name1 = Label(text='1')
name1.grid(row=0, column=1, padx=5, pady=5)
name2 = Label(text='2')
name2.grid(row=1, column=1, padx=5, pady=5)
name3 = Label(text='3')
name3.grid(row=2, column=1, padx=5, pady=5)
name4 = Label(text='4')
name4.grid(row=3, column=1, padx=5, pady=5)
name5 = Label(text='5')
name5.grid(row=4, column=1, padx=5, pady=5)
message_button1 = Button(text="Редактировать", command = lambda x=1: namebas(x))
message_button1.grid(row=0,column=3, padx=5, pady=5, sticky="e")
message_button2 = Button(text="Редактировать", command = lambda x=2: namebas(x))
message_button2.grid(row=1,column=3, padx=5, pady=5, sticky="e")
message_button3 = Button(text="Редактировать", command = lambda x=3: namebas(x))
message_button3.grid(row=2,column=3, padx=5, pady=5, sticky="e")
message_button4 = Button(text="Редактировать", command = lambda x=4: namebas(x))
message_button4.grid(row=3,column=3, padx=5, pady=5, sticky="e")
message_button5 = Button(text="Редактировать", command = lambda x=5: namebas(x))
message_button5.grid(row=4,column=3, padx=5, pady=5, sticky="e")
root.mainloop()