[英]Can't change button color because it is not defined - Python .Tkinter
尝试配置按钮,以便单击后更改颜色。
from tkinter import *
root = Tk()
def buttonsMake():
for c in range(10):
for r in range(3):
movieSeats=Button(root, text="Empty", bg="green", fg="white",
width=5, height=1, command=lambda c=c, r=r:[redClick(c, r)])
movieSeats.grid(row=r,column=c)
def redClick(c, r):
movieSeats.configure(bg="red")
buttonsMake()
root.mainloop()
我希望它会改变颜色这是错误:
movieSeats=Button(root, text="Empty", bg="green", fg="white", width=5,
height=1, command=lambda c=c, r=r:[redClick(c, r)])
File "C:/Users/----/Downloads/test2.py", line 21, in redClick
movieSeats.configure(bg="red")
NameError: name 'movieSeats' is not defined
movieSeats
是局部变量buttonsMake()
因此不存在在redClick
,你会得到错误name 'movieSeats' is not defined
您必须在buttonsMake()
使用global movieSeats
才能创建全局变量。
BTW:
您将所有按钮都关联到同一变量,因此您只能访问最后一个按钮。 您可以将所有按钮保留在列表中或将其发送给redClick
作为参数
import tkinter as tk
# --- functions ---
def make_buttons():
for c in range(10):
for r in range(3):
btn = tk.Button(root, text="Empty")
btn['command'] = lambda c=c, r=r, b=btn:red_click(c, r, b)
btn.grid(row=r,column=c)
def red_click(c, r, btn):
btn.configure(bg="red")
# --- main ---
root = tk.Tk()
make_buttons()
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.