2013-10-16 31 views
1

我對從Tkinter()輸入字段獲取值感到困惑。我有這樣的代碼......python Tkinter get()來自輸入字段的值

from Tkinter import* 

def valueGET(val1, val2): 
    print val1 + " " + val2 

class ContentUI(): 
def showLogin(self, frame): 

     self.contentUI = ContentUI()  

     L1 = Label(frame, text="Name") 
     L1.pack(side = LEFT) 
     L1.grid() 

     E1 = Entry(frame, bd =5) 
     E1.pack(side = RIGHT) 
     E1.grid() 

     L2 = Label(frame, text="Secret") 
     L2.pack(side = LEFT) 
     L2.grid()  

     E2 = Entry(frame, bd =5, show="*") 
     E2.pack(side = RIGHT) 
     E2.grid() 

     submit = Button(frame, text="Enter", width=15, command=valueGET(E1.get(), E2.get())) 
     submit.grid() 

class UIDisplay(): 
    def play(self): 
     root = Tk() 

     root.title(title) 
     root.geometry(dimension) 

     app = Frame(root) 

     contentUI = ContentUI() 
     contentUI.showLogin(app) 

     app.grid() 


     root.mainloop() 

adkooPlay = UIDisplay() 
adkooPlay.play() 

但似乎我的valueGET(VAL1,VAL2)方法是行不通的,它沒有打印出值,甚至使用的get()方法得到它Tkinter()條目,我做錯了嗎?該怎麼辦?

在此先感謝...

回答

4

代碼調用創建valueGET甚至在submit按鈕。然後它將該函數的返回值作爲command參數傳遞給Button構造函數。

要註冊功能回調,更換folloiwng行:

submit = Button(frame, text="Enter", width=15, command=valueGET(E1.get(), E2.get())) 

有:

submit = Button(frame, text="Enter", width=15, command=lambda: valueGET(E1.get(), E2.get())) 
0

你需要在打印命令括號內的功能

def valueGET(val1, val2): 
    print val1 + " " + val2 
+0

歡迎來到Stack Overflow。這個4歲的問題已經有了一個被接受的和最新的答案。那些最近有問題仍在等待回答的人會對你的努力表示讚賞。 – FluffyKitten

+0

看來你只知道python 3.在python 2中,print不需要括號。所以你的答案基本沒有意義。 – GhostCat

-1
from tkinter import * 
import tkinter as tk 
root =tk.Tk() 
mystring =tk.StringVar(root) 
def getvalue(): 
    print(mystring.get()) 
e1 = Entry(root,textvariable = mystring,width=100,fg="blue",bd=3,selectbackground='violet').pack() 
button1 = tk.Button(root, 
       text='Submit', 
       fg='White', 
       bg= 'dark green',height = 1, width = 10,command=getvalue).pack() 

root.mainloop()