首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用tix.DirSelectDialog?

如何使用tix.DirSelectDialog?
EN

Stack Overflow用户
提问于 2014-07-22 11:11:03
回答 1查看 1.9K关注 0票数 1

作为tkinter.filedialog.askdirectory的另一种选择,我偶然发现了tix.DirSelectDialog

遗憾的是我只是不知道怎么用它。我发现有一个__init__(self, master)方法,但我特别不知道“自我”应该是什么。

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

代码语言:javascript
复制
#!/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的答复中所建议的修正之后:

代码语言:javascript
复制
d = tix.DirSelectDialog(master=root)

令人惊讶的是,我得到了这个错误:

代码语言:javascript
复制
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)

代码语言:javascript
复制
#!/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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-22 14:12:58

一如既往地创建实例:

代码语言:javascript
复制
d = tix.DirSelectDialog(master=root)

此代码将执行(内部) tix.DirSelectDialog.__init__(self, master),并为self设置正确的参数

你可以治疗

代码语言:javascript
复制
d = tix.DirSelectDialog(master=root)

几乎类似于代码的执行(内部由python)

代码语言:javascript
复制
tix.DirSelectDialog(self=d, master=root)

# which executes

tix.DirSelectDialog.__init__(self=d, master=root)

但通常你不能这么做。

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

Python 2的工作示例:

代码语言:javascript
复制
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示例(但我有一些问题要在我的计算机上正常工作)

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24885779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档