如何为Tkinter按钮设置两个带参数的不同命令?
解决Tkinter按钮同时执行两个带参数命令的问题
你的代码存在两个核心问题,导致无法实现预期效果:
- Tkinter的
Button控件只能设置一个command参数,写两个command的话,后面的会直接覆盖前面的,所以之前的写法只会执行第二个函数。 color_pressLAB函数里错误地修改了主窗口window的背景,而非次级窗口label的,这才导致两个窗口颜色一致。
修正后的代码示例
第一步:修正背景色设置函数
def color_press(col): # 修改主窗口背景 window.configure(bg='#'+col) def color_pressLAB(labelcol): # 修改次级窗口label的背景(这里把window改成label) label.configure(bg='#'+labelcol)
第二步:整合按钮的命令逻辑
你可以把两个带参数的函数调用放在同一个lambda里,作为command的参数:
yellowButton = Button(frame, text='yellow', height=2, width=5, font=25, background='#F5E1A2', command=lambda: (color_press('F5E1A2'), color_pressLAB('FFFFBF')))
如果觉得lambda里写多个调用不够清晰,也可以单独写一个整合函数,再绑定给按钮:
def set_both_colors(): color_press('F5E1A2') color_pressLAB('FFFFBF') yellowButton = Button(frame, text='yellow', height=2, width=5, font=25, background='#F5E1A2', command=set_both_colors)
这样点击按钮后,主窗口会变成#F5E1A2,次级窗口label会变成#FFFFBF,实现不同颜色的需求。
内容的提问来源于stack exchange,提问作者Bscott4568
相关产品推荐
相关产品推荐

