Что я хочу сделать, это создать класс (Display), где я могу изменить Canvas из любого другого класса.Изменение холста tkinter из отдельного класса
from tkinter import *
#--------# Main #--------#
class Main():
def Setup(self):
Display('makeCanvas')
prun('Setup')
#--------# Display #--------#
class Display(object):
def __init__(self, cmd):
win = Tk()
win.geometry('500x500')
self.winCanvas = Canvas(master=win)
if(cmd == 'makeCanvas'):
self.winCanvas = Canvas(width=500, height=500)
elif(cmd == 'startLoop'):
mainloop()
elif(cmd == 'getCanvas'):
self.sendCanvas()
else:
print('Failed')
self.winCanvas.pack()
def sendCanvas(self):
return self.winCanvas
#--------# ConsolePrint #--------#
class ConsolePrint(Display, object):
def __init__(self, text_given):
self.tx_g = text_given
self.totalText = ''
self.canvas = Display('getCanvas')
----> self.textFeild = self.canvas.create_text()
def Console(self):
print("Console")
self.totalText += (self.tx_g + '\n')
self.textFeild.append(text=('Console: ' + self.totalText))
self.textFeild.pack()
class prun(object):
def __init__(self, text_given):
print("Printing")
printer = ConsolePrint(str('*Running: ' + str(text_given) + '*'))
print("Now the Console")
printer.Console()
Main().Setup()
Его эта строка кода, которая не не работает: self.textFeild = self.canvas.create_text()
Ошибка, которая приходит есть: AttributeError: 'Дисплей' объект не имеет attribute 'create_text'
Я знаю, что я вызываю функцию «create_text» в Диске, но я не знаю, как вызвать метод Canvas в tkinter, не наследуя его. Я попытался наследовать Canvas в Display, и ошибка, которую я получаю: TypeError: Не удается создать согласованный порядок разрешения метода (MRO) для объекта базы, Canvas
Вся помощь приветствуется.
эй, вы неправильно указали поле :) – W1ll1amvl