web-dev-qa-db-ja.com

python)でファイルパスを参照します

特定のファイルを見つけるための参照ウィンドウを備えたGUIを作成しようとしています。私は以前にこの質問を見つけました: Pythonでファイルまたはディレクトリダイアログを閲覧する

用語を調べたとき、それは私が探していたものではなかったようですが。

必要なのは、ブラウザから選択したファイルのパスを返すTkinterボタンから起動できるものだけです。

誰かがこれのためのリソースを持っていますか?

編集:申し分なく、質問に答えました。同様の質問をしている人には、調査を行ってください。そこにあるコードは機能します。 cygwinでテストしないでください。なんらかの理由で動作しません。

6
Funkyguy

TkFileDialog が役立つかもしれないと思います。

import Tkinter
import tkFileDialog
import os

root = Tkinter.Tk()
root.withdraw() #use to hide tkinter window

currdir = os.getcwd()
tempdir = tkFileDialog.askdirectory(parent=root, initialdir=currdir, title='Please select a directory')
if len(tempdir) > 0:
    print "You chose %s" % tempdir

編集: このリンク いくつかの例があります

10
Roberto

これにより、「参照」と呼ばれるボタンだけでGUIが生成され、ブラウザーから選択したファイルパスが出力されます。ファイルのタイプは、コードセグメント<*。type>を変更することで指定できます。

from Tkinter import * 
import tkFileDialog

import sys
if sys.version_info[0] < 3:
   import Tkinter as Tk
else:
   import tkinter as Tk


def browse_file():

fname = tkFileDialog.askopenfilename(filetypes = (("Template files", "*.type"), ("All files", "*")))
print fname

root = Tk.Tk()
root.wm_title("Browser")
broButton = Tk.Button(master = root, text = 'Browse', width = 6, command=browse_file)
broButton.pack(side=Tk.LEFT, padx = 2, pady=2)

Tk.mainloop()
4
Caglar Sekmen

Roberto's コードを作り直しましたが、Python3で書き直しました(わずかな変更のみ)。

簡単なデモンストレーション.pyファイルの場合はそのままコピーアンドペーストするか、関数 "search_for_file_path"(および関連するインポート)をコピーして、関数としてプログラムに配置できます。 。

import tkinter
from tkinter import filedialog
import os

root = tkinter.Tk()
root.withdraw() #use to hide tkinter window

def search_for_file_path ():
    currdir = os.getcwd()
    tempdir = filedialog.askdirectory(parent=root, initialdir=currdir, title='Please select a directory')
    if len(tempdir) > 0:
        print ("You chose: %s" % tempdir)
    return tempdir


file_path_variable = search_for_file_path()
print ("\nfile_path_variable = ", file_path_variable)
1
Shane Rooney

以前の回答とこのスレッドで見つかった回答に基づいて: Tkinterファイルダイアログにフォーカスを与える方法 これはPython 3でファイルセレクターをプルアップする簡単な方法ですいじくり回すウィンドウを見ずに、参照ウィンドウを画面の前面に移動します

import tkinter from tkinter 
import messagebox from tkinter import
filedialog

#initiate tinker and hide window 
main_win = tkinter.Tk() 
main_win.withdraw()

main_win.overrideredirect(True)
main_win.geometry('0x0+0+0')

main_win.deiconify()
main_win.lift()
main_win.focus_force()

#open file selector 
main_win.sourceFile = filedialog.askopenfilename(parent=main_win, initialdir= "/",
title='Please select a directory')

#close window after selection 
main_win.destroy()

#print path 
print(main_win.sourceFile )
0

python 3ではfiledialogに名前が変更されました。次のようにaskdirectory method(event)でフォルダパスにアクセスできます。ファイルパスを選択する場合は、 askopenfilename

import tkinter 
from tkinter import messagebox
from tkinter import filedialog

main_win = tkinter.Tk()
main_win.geometry("1000x500")
main_win.sourceFolder = ''
main_win.sourceFile = ''
def chooseDir():
    main_win.sourceFolder =  filedialog.askdirectory(parent=main_win, initialdir= "/", title='Please select a directory')

b_chooseDir = tkinter.Button(main_win, text = "Chose Folder", width = 20, height = 3, command = chooseDir)
b_chooseDir.place(x = 50,y = 50)
b_chooseDir.width = 100


def chooseFile():
    main_win.sourceFile = filedialog.askopenfilename(parent=main_win, initialdir= "/", title='Please select a directory')

b_chooseFile = tkinter.Button(main_win, text = "Chose File", width = 20, height = 3, command = chooseFile)
b_chooseFile.place(x = 250,y = 50)
b_chooseFile.width = 100

main_win.mainloop()
print(main_win.sourceFolder)
print(main_win.sourceFile )

注:変数の値は、main_winを閉じた後も保持されます。ただし、変数をmain_winの属性として使用する必要があります。

main_win.sourceFolder
0
Afshin Amiri