Я делаю графический интерфейс для игры на линкорах, но когда код запускается, я получаю сообщение об ошибке:
A1.configure (рельеф = SUNKEN)
NameError: name 'A1'не определено
Я понял, что кнопки были названы внутри функции def
, поэтому я сделал их global
, но та же ошибка все еще появляется. однако я очень плохо знаком с global
и не совсем уверен, что правильно использовал его.
from tkinter import*
import random
import time
##### main
window = Tk()
window.title("battleships")
# makes every button global
global A1
global A2
global A3
global B1
global B2
global B3
global C1
global C2
global C3
# command that places the buttons when the ships are placed
def placeships():
A1 = Button(window, width=5, height=2, text="A1", command=clickA1).place(x=0, y=0)
A2 = Button(window, width=5, height=2, text="A2", command=clickA2).place(x=50, y=0)
A3 = Button(window, width=5, height=2, text="A3", command=clickA3).place(x=100, y=0)
B1 = Button(window, width=5, height=2, text="B1", command=clickB1).place(x=0, y=50)
B2 = Button(window, width=5, height=2, text="B2", command=clickB2).place(x=50, y=50)
B3 = Button(window, width=5, height=2, text="B3", command=clickB3).place(x=100, y=50)
C1 = Button(window, width=5, height=2, text="C1", command=clickC1).place(x=0, y=100)
C2 = Button(window, width=5, height=2, text="C2", command=clickC2).place(x=50, y=100)
C3 = Button(window, width=5, height=2, text="C3", command=clickC3).place(x=100, y=100)
# commands for the buttons
def clickA1():
A1.configure(relief=SUNKEN)
def clickA2():
A2.configure(relief=SUNKEN)
def clickA3():
A3.configure(relief=SUNKEN)
def clickB1():
B1.configure(relief=SUNKEN)
def clickB2():
B2.configure(relief=SUNKEN)
def clickB3():
B3.configure(relief=SUNKEN)
def clickC1():
C1.configure(relief=SUNKEN)
def clickC2():
C2.configure(relief=SUNKEN)
def clickC3():
C3.configure(relief=SUNKEN)
placeships()
правильно ли я использовал global
и если да, то почему возникает ошибка?