1

に代わるものとして、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()

これが機能している場合、私がやりたいことをするのに十分でしょうか?

このトピックについては、ネットにはあまりありません。私の参照の 2 つは次の とおり
です

常に構文を繰り返しますが、それを利用することはできません。たぶん、より多くのプログラミングスキルを持っている人なら誰でもできますか?3 時間の調査と実験の失敗の後、私はちょっとした例に非常に満足しています。

よろしくお願いします!


編集:

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()
4

1 に答える 1