2010-10-28 115 views
2

我有一個類的按鈕,它會在gui構建時自動運行命令(我不希望它這樣做),但之後不再工作。我究竟做錯了什麼?諸如endcommand之類的內置命令就像他們應該那樣工作。Tkinter按鈕幫助

相關摘錄(忽略在開始的時候縮進問題)

class GuiPart(object):  
def __init__(self, master, queue, endCommand): 
    self.queue = queue 
    # Set up the GUI 
    #tkinter.Button(master, text='Done', command=endCommand).grid(row=6,column=6) 

    tkinter.Button(text='Update Variables', command=self.updateValues()).grid(row=3) 

    Lp_pacingState = tkinter.Label(text="p_pacingState") 
    Lp_pacingState.grid(row=1, column=3) 
    Tp_pacingState = tkinter.Label(bg="white", relief="ridge",justify="center",width=9) 
    Tp_pacingState.grid(row=1, column=4) 
    .... 

    self.textBoxes = {"p_pacingState" : Tp_pacingState, "p_pacingMode" : Tp_pacingMode, 
       "p_hysteresis" : Tp_hysteresis, "p_hysteresisInterval" : Tp_hysteresisInterval, 
       "p_lowrateInterval" : Tp_lowrateInterval, "p_vPaceAmp" : Tp_vPaceAmp, 
       "p_vPaceWidth" : Tp_vPaceWidth, "p_VRP" : Tp_VRP} 

#def updateValues(self,input): 
def updateValues(self): 
    testInput = ["p_pacingState=3", "garbage=poop", "p_VRP=5"] 
    for updates in testInput: 
     print("zzzz") 
     var = updates.split("=") 
     try: 
      self.textBoxes[var[0]].config(text = var[1]) 
     except: 
      pass 

所以我得到「ZZZZ」印在施工GUI的3倍(標籤不更新雖然他們的文本)和後按鈕不起作用那。 此外,如果theres更好的方式來更新框請告訴我。我從沒有特定順序或相關性的流獲取輸入。

在此先感謝

回答

3

當你這樣做:

command=self.updateValues() 

您調用的函數self.updateValues(因爲()的)。該函數調用的結果正在分配給不屬於你想要的命令屬性。您需要刪除(),以便command屬性獲取對該方法的引用,而不是調用該方法的結果。