Python Tk - динамически изменить кнопку, определенную в функции, по нажатию - PullRequest
2 голосов
/ 09 ноября 2011

Я новичок в создании графических интерфейсов на Python, и то, что я пытаюсь сделать, должно быть довольно простым. По сути, у меня есть класс диалога, который я использую для создания экземпляра диалога в моей программе. В этом диалоговом окне есть кнопка, которую я хочу использовать для изменения цвета. Я хочу, чтобы пользователь мог нажимать кнопку, переходить к выбору цвета, а затем возвращаться в диалоговое окно, в котором кнопка меняется на выбранный цвет. В моем диалоговом классе я определяю кнопку здесь.

def body(self, master):

  Label(master, text="Track URL:").grid(row=0)
  Label(master, text="Short label:").grid(row=1)
  Label(master, text="Long label:").grid(row=2)
  b = Button(master, text="Color",bg="white",command=self.chooseColor).grid(row=3)

  self.e1 = Entry(master)
  self.e2 = Entry(master)
  self.e3 = Entry(master)

  self.e1.grid(row=0, column=1)
  self.e2.grid(row=1, column=1)
  self.e3.grid(row=2, column=1)

  return self.e1 # initial focus

Тогда мне просто нужна простая функция выбора цвета

   def chooseColor(self):
   color = askColor()
   b["bg"] = color

Я понимаю, что b теперь выходит за рамки, поэтому я не могу его изменить, но я не понимаю, как выбрать цвет в месте, где я могу изменить цвет кнопки. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 09 ноября 2011

Сделать b переменной-членом:

self.b = Button(.....)

Тогда self.chooseColor сможет "увидеть" self.b и внести в нее изменения:

def chooseColor(self):
    color = askColor()
    self.b["bg"] = color # or however you change a color in python/tkinter
...