如何使用fix . dirselectdialog



作为tkinter.filedialog.askdirectory的替代品,我偶然发现了tix.DirSelectDialog
遗憾的是,我只是不知道如何使用它。我发现有一个__init__(self, master)方法,但我特别不知道"自我"应该是什么。

我的目标是通过按下主窗口中的按钮来触发一个目录选择对话框,并将选择的目录存储在一个变量中以供以后使用。我建议在python 3.3中使用这个最小化的示例:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from tkinter import *
import tkinter.tix as tix
root = Tk()
def pathSelect():
    d = tix.DirSelectDialog.__init__(self=???, master=root)
    if d != "":
        print(d)
button = Button(root, text="dialog", command=pathSelect)
button.pack()
root.mainloop()

如果这是工作,它是否足以做我想要的?

网上关于这个话题的文章不多。我的两个参考文献是:
http://sourcecodebrowser.com/python3.2/3.2.3 rc2/classtkinter_1_1tix_1_1_dir_select_dialog.html # ae545b097538938871e9576b83fc664be
http://epydoc.sourceforge.net/stdlib/Tix.DirSelectDialog-class.html
他们总是重复语法,但我不能利用这一点。也许其他有更多编程技能的人可以?经过三个小时不成功的研究和实验,我只是很高兴能有一个小例子。

提前感谢!


编辑:

应用furas回答中建议的修复后:

d = tix.DirSelectDialog(master=root)

我意外地得到了这个错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:Program FilesPythonlibtkinter__init__.py", line 1442, in __call__
    return self.func(*args)
  File "dirdialog.py", line 10, in pathSelect
    d = tix.DirSelectDialog(master=root)
  File "C:Program FilesPythonlibtkintertix.py", line 762, in __init__
    ['options'], cnf, kw)
  File "C:Program FilesPythonlibtkintertix.py", line 322, in __init__
    self.tk.call(widgetName, self._w, *extra)
_tkinter.TclError: invalid command name "tixDirSelectDialog"

它似乎来自fix,但库中不可能有错误,对吗?有人知道答案吗?


<

解决方案/strong>(由于furas) :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from tkinter import *
import tkinter.tix as tix
root = tix.Tk()
def print_selected(args):
    print('selected dir:', args)
def pathSelect():
    d = tix.DirSelectDialog(master=root, command=print_selected)
    d.popup()
button = Button(root, text="dialog", command=pathSelect)
button.pack()
root.mainloop()

一如既往地创建实例:

d = tix.DirSelectDialog(master=root)

这段代码将执行(内部)tix.DirSelectDialog.__init__(self, master)self的正确参数


你可以处理

d = tix.DirSelectDialog(master=root)

几乎类似于代码

的执行(在python内部)
tix.DirSelectDialog(self=d, master=root)
# which executes
tix.DirSelectDialog.__init__(self=d, master=root)

但是通常你不能这样做。


EDIT:要运行它,可能您必须为自己安装Tix (Tcl/Tk扩展)并使用tix.Tk()代替tkinter.Tk()

Python 2的工作示例:

import Tix as tix
def print_selected(args):
    print('selected dir:', args)
root = tix.Tk()
dialog = tix.DirSelectDialog(root, command=print_selected)
dialog.popup()

Python 3的类似示例(但我有一些问题在我的计算机上正常工作)

import tkinter.tix as tix
def print_selected(args):
    print('selected dir:', args)
root = tix.Tk()
dialog = tix.DirSelectDialog(root, command=print_selected)
dialog.popup()

相关内容

  • 没有找到相关文章

最新更新