2016-09-06 20 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的文本?

注:

如果我更換texttextvariable,它更新文本按下每個字符鍵後,在那裏,因爲我需要它,當用戶按下按鈕更新。


我的完整代碼:

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

查看tkinter按鈕的'command'參數。 – 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在我運行的代碼片段中,如果我將它嵌入基本tkinter窗口中,它就是「Your Input」。你的完整代碼是什麼? –

+0

你不需要'StringVar()'順便說一句。你可以直接運行's = e.get()'。 –

相關問題