Tkinter 中的基本 OOP
Posted
技术标签:
【中文标题】Tkinter 中的基本 OOP【英文标题】:Fundamental OOP in Tkinter 【发布时间】:2020-09-22 21:09:54 【问题描述】:我对 OOP 比较陌生,因此理论上了解它。我需要在 Tkinter 中实施一个项目。所以,我正在经历它。我只是在玩最基本的代码,如下所示
# https://python-textbok.readthedocs.io/en/1.0/Introduction_to_GUI_Programming.html
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
root = tk.Tk()
app = MainApplication(root)
app.mainloop()
在这里,我可以自信地说MainApplication
继承了 tk.Frame。所以,root
是一个TK object
,它在MainApplication constructor
中传递,将其分配为MainApplication
对象的parent
。
所以,当我们调用app.mainloop()
时,MainApplication object
会被调用,这反过来又可以以某种方式调用root
,因为我们将root
作为parent
的app object
。
如果我理解错了,请纠正我。
现在,当我浏览时,人们正在使用的另一种流行方法是
# https://docs.python.org/2/library/tkinter.html#a-simple-hello-world-program
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
root = tk.Tk()
MainApplication(root)
root.mainloop()
在这里,据我所知,MainApplication
被调用,root
成为它的parent
。但是如何链接 MainApplication object
和root object
,以便在调用root.mainloop()
时,它可以引用回MainApplication object
? p>
感谢任何帮助。提前致谢。
【问题讨论】:
【参考方案1】:这更多是关于tkinter
模块的实际结构,而不是关于OOP 原则。
mainloop
是Misc
类的一个方法,它是Tk
和Frame
的祖先。调用时,它本质上是使用对根 Tk 对象的引用来调用 mainloop
方法,因此无论您是从 root
还是 app
调用它,结果都是一样的。
【讨论】:
以上是关于Tkinter 中的基本 OOP的主要内容,如果未能解决你的问题,请参考以下文章