Python Tkinter не показывает метку, когда я нажимаю кнопку

У меня есть один вход и одна кнопка. Я хочу, чтобы значение ввода (Entry) было при нажатии кнопки. Когда я набираю print(mtext), он работает хорошо, но когда я помещаю его в метку, он не работает.

Вот код:

from tkinter import *

root = Tk()
root.title("Mohamed Atef")
root.geometry("900x600")

var = StringVar()
var.set("Please write something")
label = Label(root, textvariable=var, padx=10, pady=10)

#input
text = StringVar()
entry = Entry(root, textvariable=text)

def mohamed():
       mtext = text.get()
       mohamed = Label(root, textvariable=mtext)
       mohamed.pack()

#button
buttonText = StringVar()
buttonText.set("Click me !")
button = Button(root, textvariable=buttonText, command=mohamed)

label.pack()
entry.pack()
button.pack()

root.mainloop()

person Mohamed Atef    schedule 27.11.2018    source источник


Ответы (2)


Как и в случае с Flipp, ваш готовый продукт будет выглядеть так.

from tkinter import *
root = Tk()
root.title("Mohamed Atef")
root.geometry("900x600")

var = StringVar()
var.set("Please write something")
label = Label(root, textvariable=var, padx=10, pady=10)

#input
text = StringVar()
entry = Entry(root, textvariable=text)

def mohamed() :
       mtext = text.get()
       mohamed = Label(root, text=mtext)
       mohamed.pack()

#button
buttonText = StringVar()
buttonText.set("Click me !")
button = Button(root, textvariable=buttonText, command=mohamed)

label.pack()
entry.pack()
button.pack()

root.mainloop()
person Tristan Roylance Pillowpants    schedule 28.11.2018
comment
спасибо, это работает хорошо, проблема заключалась в том, что я должен изменить textvariable на текст в метке, которую я хотел бы показать. Точно так же, как вы написали. Спасибо. - person Mohamed Atef; 28.11.2018

Если вы просто хотите, чтобы текст, который находится в вашем Entry, отображался под вашими ярлыками, вы можете сделать:

def mohamed():
    mohamed = Label(root, textvariable=text)
    mohamed.pack()

Ваш код не работал, потому что значение, переданное как текстовая переменная, должно быть tkinter StringVar(), а не string.

Если вы не хотите, чтобы текст постоянно обновлялся при изменении Entry, вы должны сделать:

def mohamed():
    mtext = text.get()
    mohamed = Label(root, text=mtext)
    mohamed.pack()
person Filip Młynarski    schedule 27.11.2018