У меня есть программа, которая заново рисует холст Tkinter, уничтожая его, а затем снова рисуя. Однако каждый раз, когда он рисует прямоугольник, он перемещается на несколько пикселей вправо от экрана. Например, если первое поле нарисовано заподлицо с левой стороной экрана, примерно через десять, то теперь оно заподлицо с правой стороной экрана. Что вызывает это и как я могу остановить это?
Обратите внимание, что я запускаю все это на Mac, и у меня возникли проблемы с вещами, которые должны работать в Tkinter, которые не работают, поэтому, если вы знаете, что это проблема, пожалуйста, сообщите мне. Спасибо за любую помощь, и если вам нужна дополнительная информация, не стесняйтесь просить ее!
После того, как я следовал рекомендации Брайана Окли, у меня больше не было разрушаемого фрейма, только прямоугольники. Однако теперь у меня проблема с тем, что рамка нарисована и остается пустой навсегда ... Я не понимаю, почему.
Код:
Я немного изменился, чтобы соответствовать рекомендации Брайана Окли. Теперь я получаю ошибку TclError: invalid command name ".4332933704"
на w.create_rectangle(x, y, z, a, fill="white")
def printBoard(time,board):
global w
global root
x=20
y=15
z=60
a=45
for i in range(len(board)-3,-1,-1):
y+=30
a+=30
x=20
z=60
for j in range(len(board[i])):
x+=40
z+=40
if len(board[i][j])==0:
w.create_rectangle(x, y, z, a, fill="white")
else:
w.create_rectangle(x, y, z, a, fill='black')
root.after(int(time*1000),tech)
def tech():
global w
w.delete(ALL)
def output(board,difficulty):
global root
global w
root=Tk()
root.lift()
root.title('Tetris')
w = Canvas(root, width=500, height=750)
w.bind_all('<Up>',rotate)
w.bind_all('<Left>',left)
w.bind_all('<Right>',right)
w.bind_all('<Escape>',stop)
w.pack()
mainloop()
global playing
playing=True
printBoard(sec,board)
while playing:
play(board)
printBoard(sec,board)