我试图通过避免使用全局变量等来遵循其他相关问题的好建议。我编写了一个类方法来处理TK Button
小部件的回调函数。该函数应该从Treeview
节点返回路径变量。我可以从函数打印路径,它有我需要的东西,但对于我的生活,我无法弄清楚如何将它返回到我的主要功能。我在Windows 7上使用Python 2.7。不用说,我是初学者。
如何将我的路径从setdir()
返回到MAIN
,或者如何访问该值?
这是类方法,我不确定或没有帮助的东西被注释掉了。
class sel_dir():
#@classmethod
def __init__(self):
self.path = None
self.node = None
self.getbutton()
def getbutton(self):
Button(dirbrowse, command=self.setdir, text="SELECT").grid(row=5, column=0, padx=5)
#return self.path
def setdir(self):
self.node = tree.focus()
if tree.parent(self.node):
self.path = os.path.abspath(tree.set(self.node, "fullpath"))
if os.path.isdir(self.path):
print "PATH from sel_dir.setdir = ", self.path
dirbrowse.destroy()
return self.path
这是精简的Main
功能:
#!/usr/bin/env python
# coding=utf-8
import os
import glob
from Tkinter import *
from ttk import *
def MAIN():
global dirbrowse, tree
dirbrowse = Tk()
tree = Treeview(dirbrowse)
# Get path from button click
result = sel_dir()
#print result.path
# Just for debugging
print vars(result)
dirbrowse.mainloop()
答案 0 :(得分:0)
您无法向主要功能返回任何内容 - 它没有调用uuid: "2A4A", // HID Information
uuid: "2A33", // Boot Mouse Input Report
uuid: "2A4B", // Report Map
uuid: "2A4D", // Report
uuid: "2A4E", // Protocol Mode
,result.setdir()
。选择按钮并调用dirbrowse.mainloop()
后,它将存储在setdir()
中。您需要让result.path
做更多,或定期检查setdir()
的值。您可以使用通用窗口小部件after()
方法来执行后者。