Я делаю простую математическую игру, используя tkinter
, и у меня возникают некоторые проблемы, когда все элементы на экране перемещаются вверх.
Итак, у меня есть некоторый код, который создает экран A с холстом.Изображение на заднем плане и некоторые кнопки и текст.При нажатии кнопки экран изменяется, при нажатии другой кнопки он возвращается к экрану А, очищая холст и перерисовывая каждый элемент обратно.Я пытался изменить привязку, но это, кажется, не имеет значения.
Холст выглядит так после нажатия кнопки возврата
![The canvas looks like this after the return button is pressed](https://i.stack.imgur.com/qeN7v.jpg)
При первом посещении экрана он выглядит так, как должен.
Спасибо :) Любая помощь будет высоко ценится
def showendscreen(self,returned):
self.clearcanvas()
if returned==False:
self.newhighscore=checkifhighscore(self.mode)
self.pictures=Pictures()
if self.newhighscore == True:
self.endtext=" congratulations \n you've got a new highscore!!"
self.photo=self.pictures.congrats
elif self.newhighscore==False:
self.endtext = "Unlucky, keep practicing!"
elif self.newhighscore == "same":
self.photo=self.pictures.happy
self.endtext="well done, you got your personal best again!"
self.image1=Image.open(self.photo)
(self.w,self.h)=self.image1.size
self.image1a=ImageTk.PhotoImage(self.image1)
self.item1=self.canvas.create_image(self.w/2,self.h/2, image=self.image1a, anchor="center")
self.canvas.create_text(self.w/2,50,fill="purple",font="Purisa 40 bold",anchor='center',text=self.endtext)
self.canvas.create_text(self.w/2,600,fill="purple",font="Purisa 40 bold",anchor='n',text="You scored: "+ str(self.countq))
self.canvas.grid()
self.image1.close()
self.btn3=tk.Button(root, width=18, height =1,text="Questions Answered", font = "Purisa 20",command=self.questionsanswered)
self.btn3_window = self.canvas.create_window(((self.w/2)-150),(self.h/2)+3 ,anchor="center", window=self.btn3)
self.btn4=tk.Button(root, width=18, height =1,text="Scoreboard",font = "Purisa 20",command=self.scoreboard)
self.btn4_window = self.canvas.create_window(((self.w/2)+150),(self.h/2)+3 ,anchor="center", window=self.btn4)
self.btn5=tk.Button(root, width=18, height =1,text="My Progress",font = "Purisa 20", command = self.progress)
self.btn5_window = self.canvas.create_window(((self.w/2)),(self.h/2)+60 ,anchor="center", window=self.btn5)
self.btn6=tk.Button(root, width=10, height=1, text="Restart", font ="Purisa 15", command = restartgame)
self.btn6_window=self.canvas.create_window(((self.w/2)),(self.h/2)+120 ,anchor="center", window=self.btn6)
self.canvas.grid()
def clearcanvas(self): self.canvas.delete('all')
Кнопка, которая запускается выше функции:
self.backbutton=tk.Button(root,image=self.returnb, command= lambda: self.showendscreen(True), anchor="nw")
self.backbutton_window = self.canvas.create_window(10,60,anchor="nw", window=self.backbutton)