我想做的是创建一个类(Display),在这里我可以从任何其他类修改画布。在
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.textfield公司= self.canvas.create_文本()
出现的错误是: AttributeError:“Display”对象没有属性“create\u text”
我知道我在Display中调用一个名为“create_text”的函数,但是我不知道如何在不继承的情况下调用tkinter中的Canvas方法。我试图继承Display中的Canvas,得到的错误是: TypeError:无法为基本对象Canvas创建一致的方法解析顺序(MRO)
感谢所有的帮助。在
你可以直接访问对象属性,在这种情况下,你可以说
我在上面做的另一个更改是您没有为
create_text
指定任何参数。不过,你会得到其他错误,但这不是问题所在。在但基本上,你应该重新考虑你的脚本结构。没有必要创建
Main
和prun
类,通过字符串传递命令确实不是一个好的决定。封装代码很好,但是你做得有点过头了;)相关问题 更多 >
编程相关推荐