Python and Tkinter lambda function (sorry can't get more specific)
(As the 'homework' tag indicates, this is part of a _big_ project in Computer Science.)

I am writing a _Jeopardy!_ simulation in Python with tkinter, and I'm having a big problem regarding the use of the lambda function in buttons. Assume `root = Tk()` and `categories` is a list.

<!-- language-all: lang-python -->

	# Variable to keep the buttons
	root._buttons = {}

	# Display headers on top of page
	for i in range(5):
		# Get category name for display in main window
		name = categories[i]
		b = Label(root, text=fill(name.upper(), 10), width=18, height=3,\
			bg="darkblue", fg="white", font=("Helvetica bold", "", 11))
		b.grid(row=0, column=i)

		# Create list of buttons in that variable (root._buttons)
		btnlist = [None]*5

		# Display individual questions
		for j in range(5):

			# Make a button for the question
			b = Button(root, text="$" + str(200 * (j+1)), width=8, height=1,
                bg="darkblue", fg="orange", font=("Impact", "", 30))
			b.cat = name
			b.value = 200 * (j + 1)
			b.sel = lambda: select(b.cat, b.value)

			# Add callback event to button
			print(b.cat, b.value, b.sel)
			b.config(command=b.sel)

			# Add button to window
			b.grid(row=j+1, column=i)

			# Append to list
			btnlist[j] = b

		root._buttons[categories[i]] = btnlist

For all of the code, see [my little Code Viewer (under construction!)](http://chancehenrik.x10.mx/code/view.php?file=jeopardy.py)

It's at `lambda: select(b.cat, b.value)` where the problem seems to occur, because when I click any button on the board, it always goes to the one last button on the board. I've tried other approaches, unfortunately all using `lambda`, and I have not seen any approach that does not involve `lambda`. Help!
Python and Tkinter lambda function (sorry can't get more specific)
===

(As the 'homework' tag indicates, this is part of a _big_ project in Computer Science.)

I am writing a _Jeopardy!_ simulation in Python with tkinter, and I'm having a big problem regarding the use of the lambda function in buttons. Assume `root = Tk()` and `categories` is a list.

<!-- language-all: lang-python -->

	# Variable to keep the buttons
	root._buttons = {}

	# Display headers on top of page
	for i in range(5):
		# Get category name for display in main window
		name = categories[i]
		b = Label(root, text=fill(name.upper(), 10), width=18, height=3,\
			bg="darkblue", fg="white", font=("Helvetica bold", "", 11))
		b.grid(row=0, column=i)

		# Create list of buttons in that variable (root._buttons)
		btnlist = [None]*5

		# Display individual questions
		for j in range(5):

			# Make a button for the question
			b = Button(root, text="$" + str(200 * (j+1)), width=8, height=1,
                bg="darkblue", fg="orange", font=("Impact", "", 30))
			b.cat = name
			b.value = 200 * (j + 1)
			b.sel = lambda: select(b.cat, b.value)

			# Add callback event to button
			print(b.cat, b.value, b.sel)
			b.config(command=b.sel)

			# Add button to window
			b.grid(row=j+1, column=i)

			# Append to list
			btnlist[j] = b

		root._buttons[categories[i]] = btnlist

For all of the code, see [my little Code Viewer (under construction!)](http://chancehenrik.x10.mx/code/view.php?file=jeopardy.py)

It's at `lambda: select(b.cat, b.value)` where the problem seems to occur, because when I click any button on the board, it always goes to the one last button on the board. I've tried other approaches, unfortunately all using `lambda`, and I have not seen any approach that does not involve `lambda`. Help!