Я немного новичок, когда дело доходит до Python, но я решил, что хочу написать основную c 2-ью детскую физическую площадку. Неожиданно я столкнулся с проблемой при попытке настроить структуру basi c.
Мой план состоит в том, чтобы создать GUI с холстом в родительской функции с именем mainWindow, затем я решил создать дочерний класс (Hero), который создает круг, которым пользователь может манипулировать на холсте. Кажется, это работает довольно хорошо.
Проблема возникает, когда я пытаюсь что-то сделать с классом Hero, например, вызвать функцию для удаления круга, чтобы я мог перерисовать его в каком-то направлении. Я не могу передать холст из главного окна в класс Hero. Буду очень признателен за любую помощь, в том числе и за то, что скажу, что это неправильный способ сделать что-либо.
Я добавляю два документа, с которыми я работаю, так как за моим болтовней, вероятно, трудно следить.
I запустите программу из документа phesics.py, в результате появится GUI с моим холстом и красным кружком. Когда я закрываю окно, я получаю следующую ошибку:
classes.py ", строка 29, в moveHeroBody canvas.delete (heroBody) NameError: имя 'canvas' не определено
Unfortionetly i не знаю, как донести «мир» до ребенка
classes.py
from tkinter import *
class mainWindow():
def __init__(self):
#Setup the GUI
root = Tk()
root.geometry('800x600')
# Setup the canvas within the GUI (master)
world = Canvas(root, height = 600, width = 800, bg = "#FFFFFF")
world.place(relx = 0.5, rely = 0.5, anchor = CENTER)
Hero(world)
root.mainloop()
class Hero(mainWindow):
def __init__(self,world):
#Initial creation of hero at coordinates
x1 = 10
y1 = 10
x2 = 70
y2 = 70
heroBody = world.create_oval(x1,y1,x2,y2, fill = "#FF0000", outline = "#FF0000")
#Move the hero
def moveHeroBody():
print("moveHeroBody")
world.delete(heroBody)
phesics.py
from tkinter import *
from classes import *
mainWindow1 = mainWindow()
moveHero = Hero.moveHeroBody()