【问题标题】:Browsing file and getting filepath in entrybox in Tkinter在 Tkinter 的输入框中浏览文件并获取文件路径
【发布时间】:2019-12-15 01:38:09
【问题描述】:

我正在尝试在 python2 中使用 Tkinter 制作一个简单的 GUI,除此之外我还需要制作一个输入框和一个按钮。该按钮浏览文件并在输入框中显示文件路径。我该怎么做。

我使用了允许浏览路径的tkFileDialog.askopenfilename,但是如何让 gui 在输入框中显示该路径。

我试过如下:

import tkinter as tk
import tkFileDialog

root=tk.Tk()
def browsefunc():
    filename =tkFileDialog.askopenfilename(filetypes=(("tiff files","*.tiff"),("All files","*.*")))

ent1=tk.Entry(frame,font=40)
ent1.grid(row=2,column=2)

b1=tk.Button(frame,text="DEM",font=40,command=browsefunc)
b1.grid(row=2,column=4)

root.mainloop()

附上我需要的截图。

【问题讨论】:

  • 只需将结果插入Entry?你面临什么问题?
  • 如何将结果插入输入框?
  • 您可以阅读可用于Entry 小部件here 的方法。

标签: python tkinter openfiledialog filedialog


【解决方案1】:

可以试试这个代码,它可能会工作

   from tkinter import *
   from tkinter.filedialog import askopenfilename
   root=Tk()

   ent1=Entry(root,font=40)
   ent1.grid(row=2,column=2)

   def browsefunc():
      filename = askopenfilename(filetypes=(("jpg file", "*.jpg"), ("png file 
      ",'*.png'), ("All files", "*.*"),))
      ent1.insert(END, filename) # add this

      b1=Button(root,text="DEM",font=40,command=browsefunc)
      b1.grid(row=2,column=4)

   root.mainloop()

【讨论】:

    【解决方案2】:

    你确定你使用的是 python2 吗?因为你写的tkinter 是小写的t 而不是大写的T 还是你写错了?

    无论如何,您可以使用 Entry-widget 的 insert 方法轻松地将一些文本(在您的情况下为路径)插入到 Entry-widget 中。在您的情况下,它将是:

    import Tkinter as tk
    import tkFileDialog
    
    root=tk.Tk()    
    
    ent1=tk.Entry(root,font=40)
    ent1.grid(row=2,column=2)
    
    def browsefunc():
        filename =tkFileDialog.askopenfilename(filetypes=(("tiff files","*.tiff"),("All files","*.*")))
        ent1.insert(tk.END, filename) # add this
    
    b1=tk.Button(root,text="DEM",font=40,command=browsefunc)
    b1.grid(row=2,column=4)
    
    root.mainloop()
    

    tk.END 参数返回条目字符串的最后一个索引。
    如果你已经在 Entry-Widget 中写了这样的东西:

    This is my path:
    

    然后你添加你的路径,它看起来像这样:

    This is my path:/usr/bin/... 
    

    如您所见,它将字符串添加到“入口字符串”的末尾。
    索引的另一个选项是0,而不是您的路径将位于入口小部件的开头:

    /usr/bin...HI
    

    如果我的英语很糟糕,我很抱歉!随意编辑!

    【讨论】:

    • 谢谢它的工作,但我希望输入按钮在再次按下按钮后采用新的文件路径。它只是在多次按下时添加路径。如何获得?
    • 只需将这一行写在ent1.insert(tk.END, filename:python ent1.delete(0, tk.END) 它将从入口字符串的开头(0)到结尾(tk.END)清除入口小部件。
    • 技术上tk.END 不会返回条目字符串的最后一个索引。如果你执行print(tk.END),它只会输出字符串end。底层的 tk 框架知道你的意思是字符串的结尾。
    • 如果我想接受用户输入的目录路径,我应该在filetype 中输入什么?
    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多