There are three issues in your code:
- assigned result of
place()
(which always be None
) to bX
in line like b7 = Button(...).place(...)
. You need to separate the line into 2 statements:
b7 = Button(topper, height='114', width='115', image=b7_img, command=lambda: btn_click(b7))
b7.place(x=0, y=0)
b8 = Button(topper, height='114', width='115', image=b8_img, command=lambda: btn_click(b8))
b8.place(x=150, y=0)
b9 = Button(topper, height='114', width='115', image=b9_img, command=lambda: btn_click(b9))
b9.place(x=300, y=0)
b4 = Button(topper, height='114', width='115', image=b4_img, command=lambda: btn_click(b4))
b4.place(x=0, y=150)
b5 = Button(topper, height='114', width='115', image=b5_img, command=lambda: btn_click(b5))
b5.place(x=150, y=150)
b6 = Button(topper, height='114', width='115', image=b6_img, command=lambda: btn_click(b6))
b6.place(x=300, y=150)
b1 = Button(topper, height='114', width='115', image=b1_img, command=lambda: btn_click(b1))
b1.place(x=0, y=300)
b2 = Button(topper, height='114', width='115', image=b2_img, command=lambda: btn_click(b2))
b2.place(x=150, y=300)
b3 = Button(topper, height='114', width='115', image=b3_img, command=lambda: btn_click(b3))
b3.place(x=300, y=300)
You need to use button.config(image=...)
to change image
option instead of button(image=...)
inside btn_click()
function.
You assigned wrong value to player_turn
(assign True
when it is already True
, False
when it is already False
).
Updated btn_click()
function:
def btn_click(button):
global player_turn
if player_turn:
button.config(image=bO_img)
else:
button.config(image=bX_img)
player_turn = not player_turn
I think the button should be disabled after it is clicked so that it cannot be clicked again.