我正在学习使用tkinter制作应用程序,同时也在学习语言本身。我在一本书中找到了关于如何创建第二个窗口(设置窗口(的描述。但我不明白为什么self.parent = view.parent
。
如果PreferencesWindow():
类中没有指定parent
值,那么它从哪里来?将两个变量(self.parent = view.parent
(分隔开的点是什么?什么是视图?
我的主模块(View
类(:
import preferenceswindow
class View():
def __init__(self, parent, controller):
self.controller = controller
self.parent = parent
self.create_gui()
def create_edit_menu(self):
self.edit_menu.add_command(label="Preferences", command=self.on_preference_menu_clicked)
def on_preference_menu_clicked(self):
preferenceswindow.PreferencesWindow(self)
def create_gui(controller_instance):
root = Tk()
root.title("APP")
View(root, controller_instance)
root.mainloop()
首选项类如下所示:
class PreferencesWindow():
def __init__(self, view):
self.parent = view.parent
self.view = view
self.create_prefereces_window()
def create_prefereces_window(self):
self.pref_window = Toplevel(self.parent)
self.pref_window.title("preferences")
self.pref_window.transient(self.parent)
在我的书中没有解释这一时刻。
这些是与Python(语言(如何工作有关的基本问题。
您询问的是参数传递和类属性。
如果在类PreferencesWindow((中未指定父值,则父值来自何处
def on_preference_menu_clicked(self):
preferenceswindow.PreferencesWindow(self)
上面写着";创建一个新的PreferencesWindow,并给它一个对我自己(调用View类实例(的引用">
这随后由CCD_ 6接收;初始化新的PreferencesWindow,并以名称"View"引用调用View类中的任何内容;。这允许PreferencesWindow访问调用类实例中的变量,例如属性"parent";。
self.parent = view.parent
-此操作很常见,以避免手动传递"视图"。它从class View ... self.parent = parent
中设置的view.parent
中捕获"parent"的值