作为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()如果这起作用了,我想做什么就够了吗?
网上没有太多关于这个话题的内容。我的两份推荐信是:
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 Files\Python\lib\tkinter\__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 Files\Python\lib\tkinter\tix.py", line 762, in __init__
['options'], cnf, kw)
File "C:\Program Files\Python\lib\tkinter\tix.py", line 322, in __init__
self.tk.call(widgetName, self._w, *extra)
_tkinter.TclError: invalid command name "tixDirSelectDialog"它似乎来自于tix内部,但是库中不可能有错误,对吗?有人能回答这个问题吗?
解决方案(感谢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()发布于 2014-07-22 14:12:58
一如既往地创建实例:
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)但通常你不能这么做。
编辑:要运行它,您可能必须为自己安装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()https://stackoverflow.com/questions/24885779
复制相似问题