python – 如何在Tkinter中使用相同的对话框来浏览和选择文件和
我正在使用Tkinter为
python脚本构建GUI.我需要一个按钮,打开一个对话框,允许我选择文件和目录.
直到现在,我才遇到过 tkFileDialog.askdirectory(parent=root,title=dirtext1) 只允许在对话框中选择目录 tkFileDialog.askopenfilename(parent=root,title=filetext) 这允许我只选择文件.截至目前,我使用单独的按钮访问这些对话框,每个按钮调用其中一个功能. 解决方法
我不这么认为.没有内置类可以轻松完成
调查 如果查看tkFileDialog模块的源代码,Open类和Directory类都继承自位于tkCommonDialog的_Dialog. 目前很好;这些类很简单,只扩展了两个方法. _fixresult是一个基于你的选项(有希望的)过滤的钩子,_fixoptions添加了正确的tcl参数(比如初始目录). 但是当我们到达Dialog类(_Dialog的父级)时,我们看到它通过给定名称调用tcl命令.内置的名称是“tk_getOpenFile”和“tk_chooseDirectory”.在此之后我们没有很多python级别的命令自由.如果我们去看看其他tcl scripts are avaliable,we are disappointed. 看起来你的选择 > ttk :: getOpenFile 结论 老鼠!幸运的是,使用列表框,输入字段,按钮(和其他tk-builtins)以及os模块创建自己的对话框应该很容易. 简单的选择 从您的评论来看,它似乎是一个可行的简单解决方案可能会使用 directory = os.path.dirname(os.path.realpath(tkFileDialog.askopenfilename())) 他们必须选择一个文件,但“打开”按钮将“返回一个路径”,因为路径是从文件位置计算的 但我真的很想要它! 如果由于某种原因您确实需要此行为但不想重新创建窗口小部件,则可以直接调用tcl脚本.可以从getOpenFile复制代码并提供更多的松散参数,以允许选择更通用的对象.这不是我的专业,似乎是一个非常糟糕的主意,但here就是你直接调用tcl的方法,here是你可以了解更多有关底层命令的地方. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |