2014-03-05 53 views
-4

我想比較存儲在e1_vare2_var中的兩個值。如果它們相同,我想在主窗口上顯示一個按鈕;如果它們不匹配,我想顯示另一個按鈕。我到目前爲止所嘗試的都不起作用。有人可以告訴我如何做到這一點?如何使用if語句比較兩個變量?

def lockscreen(): 
    locks = Toplevel(width=500,height=500) 
    locks.title('Lock Screen') 
    l1 = Label(locks,text="Enter 4 Digit Lock Code") 
    l1.grid(row=1,column=1,columnspan=3) 
    e1=Entry(locks, bd=5) 
    e1.grid(row=2,column=1,columnspan=3) 
    e1_var=StringVar() 
    e1["textvariable"]=e1_var 

    def insert_1(): 
     e1.insert(INSERT,1) 
    def insert_2(): 
     e1.insert(INSERT,2) 
    def insert_3(): 
     e1.insert(INSERT,3) 
    def insert_4(): 
     e1.insert(INSERT,4) 
    def insert_5(): 
     e1.insert(INSERT,5) 
    def insert_6(): 
     e1.insert(INSERT,6) 
    def insert_7(): 
     e1.insert(INSERT,7) 
    def insert_8(): 
     e1.insert(INSERT,8) 
    def insert_9(): 
     e1.insert(INSERT,9) 
    def insert_0(): 
     e1.insert(INSERT,0)  
    def lock_action(): 
     lock_code=e1_var.get() 
     print (lock_code) 
     Button(master,width=50,height=50, text='Unlock', command=unlock).place(x=0,y=0) 


    Button(locks, width=3, height=3, text='1', command =insert_1).grid(row=3,column=1)   
    Button(locks, width=3, height=3, text='2', command =insert_2).grid(row=3,column=2) 
    Button(locks, width=3, height=3, text='3', command =insert_3).grid(row=3,column=3) 
    Button(locks, width=3, height=3, text='4', command =insert_4).grid(row=4,column=1) 
    Button(locks, width=3, height=3, text='5', command =insert_5).grid(row=4,column=2) 
    Button(locks, width=3, height=3, text='6', command =insert_6).grid(row=4,column=3) 
    Button(locks, width=3, height=3, text='7', command =insert_7).grid(row=5,column=1) 
    Button(locks, width=3, height=3, text='8', command =insert_8).grid(row=5,column=2) 
    Button(locks, width=3, height=3, text='9', command =insert_9).grid(row=5,column=3) 
    Button(locks, width=3, height=3, text='Close').grid(row=6,column=1) 
    Button(locks, width=3, height=3, text='0', command =insert_0).grid(row=6,column=2) 
    block=Button(locks, width=3, height=3, text='Lock',command=lock_action) 
    block.grid(row=6,column=3) 

    def unlock(): 
     ulocks = Toplevel(width=500,height=500) 
     ulocks.title('Unlock Screen') 
     l2 = Label(ulocks,text="Enter 4 Digit Unlock Code") 
     l2.grid(row=1,column=1,columnspan=3) 
     e2=Entry(ulocks, bd=5) 
     e2.grid(row=2,column=1,columnspan=3) 
     e2_var=StringVar() 
     e2["textvariable"]=e2_var 


     def insert_u1(): 
      e2.insert(INSERT,1) 
     def insert_u2(): 
      e2.insert(INSERT,2) 
     def insert_u3(): 
      e2.insert(INSERT,3) 
     def insert_u4(): 
      e2.insert(INSERT,4) 
     def insert_u5(): 
      e2.insert(INSERT,5) 
     def insert_u6(): 
      e2.insert(INSERT,6) 
     def insert_u7(): 
      e2.insert(INSERT,7) 
     def insert_u8(): 
      e2.insert(INSERT,8) 
     def insert_u9(): 
      e2.insert(INSERT,9) 
     def insert_u0(): 
      e2.insert(INSERT,0)  
     def unlock_action(): 
      unlock_code=e2_var.get() 
      if lock_code==unlock_code 
       Button(master,width=800, height=800, text='IT WORKS!!!!!!!').place(x=400,y=0) 
       else if 
       Button(master,width=800,height=800, text='It doesnt work :-(').place(x=20,y=0) 

     Button(ulocks, width=3, height=3, text='1', command =insert_u1).grid(row=3,column=1)   
     Button(ulocks, width=3, height=3, text='2', command =insert_u2).grid(row=3,column=2) 
     Button(ulocks, width=3, height=3, text='3', command =insert_u3).grid(row=3,column=3) 
     Button(ulocks, width=3, height=3, text='4', command =insert_u4).grid(row=4,column=1) 
     Button(ulocks, width=3, height=3, text='5', command =insert_u5).grid(row=4,column=2) 
     Button(ulocks, width=3, height=3, text='6', command =insert_u6).grid(row=4,column=3) 
     Button(ulocks, width=3, height=3, text='7', command =insert_u7).grid(row=5,column=1) 
     Button(ulocks, width=3, height=3, text='8', command =insert_u8).grid(row=5,column=2) 
     Button(ulocks, width=3, height=3, text='9', command =insert_u9).grid(row=5,column=3) 
     Button(ulocks, width=3, height=3, text='Close').grid(row=6,column=1) 
     Button(ulocks, width=3, height=3, text='0', command =insert_u0).grid(row=6,column=2) 
     Button(ulocks, width=3, height=3, text='Unlock',command=unlock_action).grid(row=6,column=3) 

master.mainloop() 
+1

你必須與你'if'聲明基本語法問題。參見:http://docs.python.org/2/tutorial/controlflow.html –

+5

方提示:任何時候你用「insert_1」,「insert_2」,「insert3」重複相同的代碼行。 ..這意味着你做錯了什麼。我們發明了計算機編程,以便我們不必做那樣的重複性任務 –

+0

謝謝我會看看那個鏈接,並且如何縮小插入部分? – user2996828

回答

0

The Variable Classes (BooleanVar, DoubleVar, IntVar, StringVar):

得到方法返回變量的當前值,作爲一個Python 對象。對於BooleanVar變量,返回值爲false表示false,1表示true。對於DoubleVar變量,返回的值是一個Python浮點數。對於IntVar,它是一個整數。 對於StringVar,它可以是ASCII字符串或Unicode字符串,具體取決於內容

第一個測試比較兩個StringVar對象。由於每個都是它自己的實例,它們是獨一無二的。你將不得不做深入比較來確定平等。

第二個只是一個字符串比較。

from Tkinter import * 

if __name__ == '__main__': 
    Tk() 

    e1_var = StringVar() 
    e2_var = StringVar() 

    print 'Test 1 [Object compare]: {}'\ 
     .format('same' if e1_var == e2_var else 'different') 
    print 'Test 2 [String compare]: {}'\ 
     .format('same' if e1_var.get() == e2_var.get() else 'different') 

輸出:

Test 1 [Object compare]: different 
Test 2 [String compare]: same