2017-02-28 79 views
0

目前,這是我的代碼:Tkinter的一個函數內部結合

from tkinter import * 

class Application(Frame): 

    def a(self, event = None): 

     print ("a") 

    def create_widgets(self): 

     def b(event = None): 

      print(entry.get()) 

     entry = Entry() 
     entry.grid(row = 1, column = 1) 
     Button(text = "b", command = b).grid(row = 1, column = 2) 

    def __init__(self, master = None): 
     Frame.__init__(self, master) 
     self.grid() 
     self.create_widgets() 
     master.bind("<Return>", b) 

root = Tk() 
app = Application(master = root) 
app.mainloop() 

到目前爲止,它調用,但self.b更換self.a使它B鍵,而不是帶來了AttributeError錯誤:「應用程序」對象沒有屬性'b',只有b返回一個NameError:'b'沒有被定義。

那麼我怎樣才能使綁定調用像按鈕?

回答

0

So how can I make the bind call b like the button?

在我看來,最好的解決辦法是讓b類的適當的方法,而不是一個嵌套函數。讓你的小部件適當的屬性以及代碼變得更容易編寫:

class Application(Frame): 
    def a(self, event = None): 
     print ("a") 

    def b(self, event = None): 
     print(self.entry.get()) 

    def create_widgets(self): 
     self.entry = Entry() 
     self.entry.grid(row = 1, column = 1) 
     Button(text = "b", command = b).grid(row = 1, column = 2) 

    def __init__(self, master = None): 
     ... 
     master.bind("<Return>", self.b) 
+0

啊,謝謝!這工作完美。我實際上並不知道你能做到這一點,仍然在學習tkinter。 – FrozenDude101