2015-02-12 210 views
0

tkinter的新功能,但截至目前,我不知道爲什麼我的代碼不斷返回失敗,而不是通過。爲什麼我的代碼不工作?

import tkinter as tk 

class GUI(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.entry = tk.Entry(self) 
     self.user_Label = tk.Label(self, text="Username") 
     self.pass_entry = tk.Entry(self) 
     self.pass_Label = tk.Label(self, text="Password") 
     self.login = tk.Button(self, text="Login", foreground="black", command=self.on_button) 

     #Packing 
     self.user_Label.pack() 
     self.entry.pack() 
     self.pass_Label.pack() 
     self.pass_entry.pack() 
     self.login.pack() 

    def on_button(self): 
     if self.entry and self.pass_entry == "hello": 
      print("passed") 
     else: 
      print("Failed") 
app = GUI() 
app.mainloop() 
+0

試試'如果self.pass_entry.get()==「你好」:...'爲'self.pass_entry'永遠等於' 'hello'(前者是一個tkinter小部件 - 後者是一個字符串)。 – mgilson 2015-02-12 06:40:40

回答

1

它不工作,因爲你需要使用以下方法來獲取密碼的輸入值:

self.pass_entry.get() 

因此,你應該有:

if self.entry.get() and self.pass_entry.get() == "hello": 

作爲一個邊注意。如果你有密碼輸入控件,更好地做到這一點,如下所示:

self.pass_entry = tk.Entry(self, show="*") 
+0

啊哈哈,謝謝你這麼多!沒有意識到我還沒有添加get函數! – JACK 2015-02-12 06:42:59

+0

我很確定'如果self.entry'檢查沒有做任何事情。 'tkinter.Widget'可能默認爲真。 – mgilson 2015-02-12 06:43:57

+0

@mgilson你的權利。它也應該是'self.entry.get()':-) – Marcin 2015-02-12 06:52:14