2015-02-12 14 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

ответ

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

+0

Я уверен, что проверка 'if self.entry' ничего не делает. «tkinter.Widget», по всей вероятности, будет правдивым по умолчанию. – mgilson

+0

@mgilson вы правы. Это также должно быть 'self.entry.get()' :-) – Marcin

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