2016-09-06 28 views
5

Robię program, który wymaga od użytkownika wprowadzenia wartości. Chcę, aby wartość była wyświetlana za pomocą widżetu wiadomości (lub widżetu etykiety) i aktualizuje się po każdym wprowadzeniu nowego wejścia.Python: Jak zmienić tekst widgetu wiadomości na dane wejściowe użytkownika

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() 

Czy istnieje sposób, aby zmienna v zastępowała tekst Widżetu wiadomości?

Uwaga:

Gdybym zastąpić text z textvariable aktualizuje tekst po każdym naciśnięciu klucz charakter, gdzie jak trzeba go aktualizować, gdy użytkownik naciśnie przycisk.


mój pełny kod:

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

Zobacz parametr 'command' przycisku tkinter. – galah92

+0

Dzięki! Muszę uczyć kilka godzin, przyjrzymy się temu później wieczorem :) –

+0

Ok. Ale teraz zamiast "PY_VAR0", zwraca '.56748976'. Ale mogę poczekać, aż wrócisz. Lub jeśli ktoś inny może pomóc, byłoby to docenione. – DavalliTV

Odpowiedz

4

Wystarczy dodać:

m.configure(text=s) 

do funkcji:

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

Na marginesie, niekoniecznie potrzebujesz StringVar(). Poniższy kod zrobi dokładnie to samo:

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

Dzięki za to. Ale zanim wejdę do postaci, etykieta mówi: "PY_VAR0". Czy istnieje sposób na pozostawienie go pustym? – DavalliTV

+0

@JackBond na fragmencie kodu, który uruchamiam, to sa "Twoje dane wejściowe", jeśli osadzę je w podstawowym oknie programu tkinter. Jaki jest twój pełny kod? –

+0

Nie potrzebujesz 'StringVar()' btw. Możesz bezpośrednio uruchomić 's = e.get()'. –