gpt4 book ai didi

python - 如何在 python tkinter 中分离 View 和 Controller ?

转载 作者:行者123 更新时间:2023-11-28 16:42:27 28 4
gpt4 key购买 nike

关于在两个模块中分离 UI 和 UI 功能,我对 tkinter 有疑问,这是我的代码:

1-view.py

from tkinter import *

class View():
def __init__(self,parent):
self.button=Button(parent,text='click me').pack()

2.controller.py

from tkinter import *
from view import *

class Controller:
def __init__(self,parent):
self.view1=View(parent)
self.view1.button.config(command=self.callback)

def callback(self):
print('Hello World!')


root=Tk()
app=Controller(root)
root.mainloop()

在运行 controller.py 时出现以下错误:

AttributeError: 'NoneType' 对象没有属性 'config'

有什么建议吗?

我还尝试使用 lambda 在另一个模块中使用回调函数,但它没有用。

提前致谢

最佳答案

lambda 方法问题与上面完全相同,现在通过在新行中使用包来解决。它看起来更漂亮,这是使用 lambda 的示例,它工作正常:

1.view.py

from tkinter import *
from controller import *

class View():
def __init__(self,parent):
button=Button(parent,text='click me')
button.config(command=lambda : callback(button))
button.pack()


root=Tk()
app=View(root)
root.mainloop()

2.controller.py

def callback(button):
button.config(text='you clicked me!')
print('Hello World!')

使用这种方法,我们可以将所有功能从 UI 中移开,并使其简洁易读。

关于python - 如何在 python tkinter 中分离 View 和 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17597931/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com