看板 Python 關於我們 聯絡資訊
小弟最近初學python有一個問題有點困惑 我用Tkinter寫了一個小視窗 from Tkinter import * class radio_practice: def __init__(self, master): self.v = IntVar() self.frame = Frame(master) self.label = Label(master, text = 'choose a language', justify = LEFT, font = ('times',26)) self.label.pack(fill = BOTH, side = TOP) self.botton1 = Radiobutton(master, text = 'python', variable = self.v, value = 1, command = self.print_variable) self.botton1.pack(fill = BOTH, side = LEFT, expand = True) self.botton2 = Radiobutton(master, text = 'C#', v ariable = self.v, value = 2, command = self.print_variable) self.botton2.pack(fill = BOTH, side = LEFT, expand = True) def print_variable(self): print self.v.get() root = Tk() program_choose = radio_practice(root) root.mainloop() 後面那個print_variable function是為了觀察一下self.v會不會被我按下button後改變 的狀況,但是我的command如果 = self.print_variable()程式一跑self.v就會被印出來 而且任憑我怎麼點按鈕也不會顯示出被改過的self.v,但是如果沒有那個括號就可以如 預期看到self.v被改變 想請問在class裡面呼叫function有沒有括號的意義有何不同? 檔案請由此下載: https://www.dropbox.com/s/mgml6286tfmi5g8/radiobutton.py?dl=0 -- 食色性也 美食|生活|旅遊|攝影|醫學| 科技 #####http://j3234567.pixnet.net/blog####### -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.70.128.56 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1425016847.A.131.html
mail6543210: command=func是接收一個參數,該參數是一個function 02/27 19:04
mail6543210: 事件發生時才call該func,cmd=func()變成呼叫func並 02/27 19:05
mail6543210: 將其回傳值None當作command; 02/27 19:06
mail6543210: 因print_var回傳None,所以相當於command=None,即事件 02/27 19:07
mail6543210: 發生時不處理.簡言之,這是因func可視為物件,並傳遞. 02/27 19:08