2016-09-06 1 views
5

Так что я делаю программу, которая требует от пользователя ввода значения. Я хочу, чтобы значение отображалось через виджет сообщения (или виджет метки) и обновлялся всякий раз, когда вводится новый ввод.Python: как изменить текст виджета сообщения на пользовательский ввод

def Enter(): 
    s = v.get() 
    print (v.get()) 

    e.delete(0, END) 
    e.insert(0, "") 

#Code, Code, Code 
... 

# Area To Enter Text 
v = StringVar() 
e = Entry(root, textvariable=v) 
e.pack() 

m = Message(root, text = "Your Input") 
m.pack() 

# Enter Button 
b = Button(root, text="OK", command=Enter) 
b.pack() 

Есть ли способ для переменной v заменить текст Message Widget ??

Примечание:

Если я заменяю text с textvariable, он обновляет текст после того, как каждый ключевой персонаж будет нажата, где, как мне нужно, чтобы обновить, когда пользователь нажимает на кнопку.


Мой полный код:

from tkinter import * 
import os 

# All Functions Below 
def callback(): 
    print ("HI") 

def Exit(): 
    os._exit(0) 

def Enter(): 
    s = e.get() 
    print (e.get()) 
    m.configure(text=s) 
    e.delete(0, END) 
    e.insert(0, "") 

def Population(): 
    root = Tk 

    root.mainloop() 

def SurvivalRate(): 
    root = Tk 

    root.mainloop() 

def BirthRate(): 
    root = Tk 

    root.mainloop() 

def NewGen(): 
    root = Tk 

    root.mainloop() 

root = Tk() 


generation = 0 

menubar = Menu(root) 
menubar.add_command(label="Hello!", command=callback) 
menubar.add_command(label="Quit!", command=Exit) 


# Area To Enter Text 
e = Entry(root) 
e.pack() 

m = Message(root, text = e) 
m.pack() 

# Enter Button 
b = Button(root, text="OK", command=Enter) 
b.pack() 

Pop = Button(root, text="Population", command=Population) 
Pop.pack() 
+0

Посмотрите на параметр 'command' кнопки tkinter. – galah92

+0

Спасибо! должен научить несколько часов, посмотрим на это позже сегодня вечером :) –

+0

Хорошо. Но теперь вместо 'PY_VAR0' он возвращает' .56748976'. Но я могу подождать, пока ты не вернешься. Или, если кто-то еще может помочь, это будет оценено. – DavalliTV

ответ

4

Просто добавьте:

m.configure(text=s) 

вашей функции:

def Enter(): 
    s = v.get() 
    print (v.get()) 
    m.configure(text=s) 
    e.delete(0, END) 
    e.insert(0, "") 

В качестве побочного примечания вам необязательно нужен StringVar(). Нижеприведенный код будет делать то же самое:

def Enter(): 
    s = e.get() 
    m.configure(text=s) 
    e.delete(0, END) 
    e.insert(0, "") 

#Code, Code, Code 
... 

# Area To Enter Text 
e = Entry(root) 
e.pack() 

m = Message(root, text = "Your Input") 
m.pack() 

# Enter Button 
b = Button(root, text="OK", command=Enter) 
b.pack() 

root.mainloop() 
+0

Спасибо за это. Но, прежде чем я войду в персонаж, на лейбле написано 'PY_VAR0'. Есть ли способ оставить его пустым? – DavalliTV

+0

@JackBond по фрагменту кода, который я запускаю, это sais «Your Input», если я встрою его в основное окно tkinter. Каков ваш полный код? –

+0

Вам не нужно 'StringVar()' btw. Вы можете напрямую запустить 's = e.get()'. –

Смежные вопросы