Кнопки Tkinter помогают - PullRequest
       4

Кнопки Tkinter помогают

2 голосов
/ 28 октября 2010

У меня есть класс с кнопкой, он запускает команду автоматически при создании графического интерфейса (что я не хочу, чтобы он делал), но затем снова не работает. Что я делаю неправильно? Встроенные команды, такие как endcommand, работают так, как должны.

соответствующие выдержки (игнорируйте проблему с отступом в самом начале)

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", напечатанный 3 раза при создании графического интерфейса (хотя ярлыки не обновляют свой текст), и кнопка не работает после этого Также, если есть лучший способ обновить коробки, пожалуйста, сообщите мне. Я получаю информацию из потока в произвольном порядке или не по релевантности.

Заранее спасибо

1 Ответ

3 голосов
/ 28 октября 2010

Когда вы делаете это:

command=self.updateValues()

Вы вызываете функцию self.updateValues (из-за ()). Результат этого вызова функции присваивается атрибуту команды, который вам не нужен. Вам необходимо удалить (), чтобы атрибут command получил ссылку на метод, а не результат вызова метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...