我得到了“MainView没有心房ct”,即使它被设置在它的__init__
ct将是控制器的参考
这里是主视图.py你知道吗
import tkinter as tk
class MainView(tk.Frame):
def __init__(self, root, ct):
tk.Frame.__init__(root)
self.startUI()
self.ct = ct
def startUI(self):
botaoProdutos = tk.Button(self, text = "Produtos", command = self.toProdutos() , padx = 5 , pady = 5)
botaoProdutos.pack(side = "top")
def toProdutos(self):
self.ct.toProdutos()
def start(ct):
ct = ct
root = tk.Tk()
main = MainView(root, ct)
main.tkraise()
root.mainloop()
return main
打电话的人呢
from Controller.ProdutoController import ProdutoController
from View.MainView import start
class Main:
def __start__(self):
self.ctProduto = ProdutoController()
self.viewMain = start(self)
def toProdutos(self):
self.ctProduto.toProdutos()
if __name__ == "__main__":
main = Main()
main.__start__()
回溯:
Traceback (most recent call last):
File "C:/Users/Gabriel/PycharmProjects/untitled/Controller/Main.py", line 19, in <module>
main.__start__()
File "C:/Users/Gabriel/PycharmProjects/untitled/Controller/Main.py", line 9, in __start__
self.viewMain = start(self)
File "C:\Users\Gabriel\PycharmProjects\untitled\View\MainView.py", line 22, in start
main = MainView(root, ct)
File "C:\Users\Gabriel\PycharmProjects\untitled\View\MainView.py", line 7, in __init__
self.startUI()
File "C:\Users\Gabriel\PycharmProjects\untitled\View\MainView.py", line 12, in startUI
botaoProdutos = tk.Button(self, text = "Produtos", command = self.toProdutos() , padx = 5 , pady = 5)
File "C:\Users\Gabriel\PycharmProjects\untitled\View\MainView.py", line 16, in toProdutos
self.ct.toProdutos()
我看你少了一些东西。你知道吗
root
。你知道吗为此,需要将
self.root = root
添加到__init__
。你知道吗super
对象,因此tk.Frame.__init__(self, root)
存在。你知道吗现在,在典型的MVC中,您的视图不应该交给控制器,因此我建议,您可以像这样重构您的应用程序,例如
视图的变化如下所示
最后,
main
或start
函数可以将模型和视图分配给控制器相关问题 更多 >
编程相关推荐