【发布时间】:2018-06-21 09:11:18
【问题描述】:
首先我对 OOP 编码很陌生,很抱歉提出愚蠢的问题。
如果有意义的话,我从 Class AskDir 返回一个从 Class SelectDir 到 Class MainWindow 的值时遇到问题 p>
目前我拥有的代码在其他方面都有效,除了我无法保存来自 Class AskDir() 的实际“self”(即路径,即“/home/etc/”)返回值 strong> 到另一个变量,无论我做什么。
根据我的阅读,我应该能够通过 a = AskDir(self) 获得返回值 print(a),但我得到的是 ".!frame.!functionchangename.!askdir"
简而言之,如何将AskDir类中函数的实际返回路径保存到MainWindow()类中的变量a中?
为了澄清,我想要的是 Class MainWindow() 有一个变量 (a),它从 Class SelectDir() 中的子函数 get() 获取返回值,并且该值应该是 path get() 函数返回
简化代码:
class MainWindow:
self.controller = controller
# prints the button to this frame!
getdir = AskDir(self)
print(getdir) # this should return actual path (/home/etc/), but it doesnt
class AskDir(tk.Frame):
def __init__(self, container):
tk.Frame.__init__(self, container)
self.selectdir = SelectDir(self, "Select directory",
"/home/user/folder/")
button = tk.Button(frame, text="Select directory",
command=self.select_dir)
self.act_dir = tk.StringVar()
self.act_dir.set("/home/")
def select_dir(self):
self.selectdir.show()
self.act_dir.set(self.selectdir.get())
class SelectDir:
def __init__(self, container, title, initial):
self.master = container
def show(self):
result = filedialog.askdirectory()
if result:
self.selected = result
# THIS RETURNS THE ACTUAL PATH!
def get(self):
return self.selected
【问题讨论】:
-
自我在班级工作,但不在班级和另一个班级之间;如果你想将一个类的值传递给另一个类,你需要调用该类并返回一些值。
-
您能否尝试发布一个简单的(r)示例,在其中准确解释您想要做什么。从您的问题来看,您很难理解您具体要做什么,尤其是当您引用代码中不存在的类时。
-
好的,请稍等,我稍微编辑一下代码。
-
你混淆了函数和类。
getdir = AskDir(self)将创建 AskDir 类的一个实例,并将对它的引用保留在 getdir 变量中。您应该创建该类的一个实例,然后调用其方法之一,该方法将返回文件路径。例如directoryClass = AskDir(self)getdir = directoryClass.get() -
How to create a Minimal, Complete, and Verifiable Example 并且不要重新发布您已经提出但没有答案的问题。
**也不是标记code的方式,使用`(反引号)字符。如果您打算在这里向其他人寻求帮助,我建议您花一点时间学习如何正确使用该网站。