尝试通过 Python 3.6 中的文件对话框中的按钮获取所选文件的完整路径

Trying to get full path of a chosen file by button from filedialog in Python 3.6

键入 GUI 以进一步将其与另一部分代码合并。我一直坚持获取像 "x:/folder1/folder2/Sample.rar" 这样的文件的完整路径作为字符串。我需要将它放入 Label 或 Entry(无论如何,只是为了显示它已获取)并使用此字符串进行进一步输入,这将完成一些工作。 我试图将 is 作为 str 但没有得到任何结果。 期待学习制作字符串的方法。

import os
#import rarfile
import tkinter.messagebox
from tkinter import filedialog
from tkinter.filedialog import askopenfilename
from tkinter import *
from tkinter import ttk
from cgitb import text

window = Tk()
window.title("GUI")
window.geometry('430x500')

lbl3 = Label(window, text="Choose log archives: ", font='Trebushet 8')
lbl3.grid(column=0, row=10)

browseFile = Button(text="Browse files", font='Trebushet 8', width=15, command=lambda : 
            filedialog.askopenfilename(initialdir = "/",
            title = "Seledct archives including logs",
            filetypes = (("RAR files","*.rar"))))
browseFile.grid(column=0, row=11)

FileName = Label(window)
FileName.grid(column=0, row=12)

if browseFile:
    print (str(FileName))
window.mainloop()

Copy comment:I have found an approach but Label is not callable.

def print_path(): 
    f = tkinter.filedialog.askopenfilename( parent=window, initialdir='C:/', title='Choose file', filetypes=[("RAR files","*.rar"), ("all files","*.*")] ) print(str(FileName())) 
    browseFile = tkinter.Button(window, text='Browse file', 
                                command=print_path) 
    browseFile.grid(column=0, row=11) 
    browseFile.pack(fill=FileName())

您忘记将 , 添加到文件类型 arg,请参见下文。

文件类型 = (("RAR files","*.rar"),)))

亲爱的朋友们。我已经定义了一个满足我要求的解决方案。这是 entry 的简单定义,使用 Entry 作为插入 str 的便捷方式。

def input():
input_path = filedialog.askopenfilename(initialdir="/", title="Open file",
             filetypes=[("RAR files","*.rar"), ("all files","*.*")]
)

print(input_path)
input_entry.delete(1, END)  # Remove current text in entry
input_entry.insert(0, input_path)  # Insert the 'path'

button = Button(window, text='Choose a file', command=lambda : input())
button.grid(column=0, row=11)

Empty4 = Label(window)
Empty4.grid(column=0, row=12)

input_entry = Entry(window, text="")
input_entry.grid(column=0, row=13)
input_entry.focus_set()
input_entry.update()

非常感谢您在这里提出的想法和提示。