Python Tk - 点击时动态更改函数定义的按钮

2 投票
1 回答
1768 浏览
提问于 2025-04-17 05:58

我刚开始用Python制作图形用户界面(GUI),我想做的事情应该很简单。基本上,我有一个对话框类,用来在我的程序中创建一个对话框。这个对话框里有一个按钮,我想用它来改变颜色。我希望用户能点击这个按钮,打开一个颜色选择器,然后再返回到对话框,按钮的颜色就变成用户选择的颜色。在我的对话框类中,我在这里定义了这个按钮。

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

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

撰写回答