如何用 idlelib.TreeWidget 打开一个文件?

How to open a file with idlelib.TreeWidget?

我正在 Python 3.5 中制作一个文件浏览器,我已经包含了重命名和查看功能,但我不确定如何制作它以便在您单击该文件时它会打开。我知道如何使用 os.startfile("file"),但我不确定在哪里包含它。

try:
    from Tkinter import *
except ImportError:
    from tkinter import *

from idlelib.TreeWidget import ScrolledCanvas, FileTreeItem, TreeNode

root = Tk()
root.title("Browser")
sc = ScrolledCanvas(root, bg="white", highlightthickness=0, takefocus=1)
sc.frame.pack(expand=1, fill="both", side="left")
loc = input("Please enter your directory: ")
item = FileTreeItem(loc)
node = TreeNode(sc.canvas, None, item)
node.expand()
root.mainloop()

您可以通过继承 idlelib.TreeNode 并覆盖继承的 select() 方法来获取与 TreeNode 关联的文件名。

这是我的意思的一个例子:

try:
    from Tkinter import *
except ImportError:
    from tkinter import *

from idlelib.TreeWidget import ScrolledCanvas, FileTreeItem, TreeNode

class MyTreeNode(TreeNode):
    def select(self, event=None):
        TreeNode.select(self, event)  # can't use super() here in Python 2
        print('select called')
        print('self.item.GetText(): {!r}'.format(self.item.GetText()))
        print('self.item.path: "{}"'.format(self.item.path))  # call os.startfile() here

root = Tk()
root.title("Browser")

sc = ScrolledCanvas(root, bg="white", highlightthickness=0, takefocus=1)
sc.frame.pack(expand=1, fill="both", side="left")

loc = input("Please enter your directory: ")
item = FileTreeItem(loc)

node = MyTreeNode(sc.canvas, None, item)
node.expand()

root.mainloop()