如何修复这些异常以创建一个";浏览「;Python中带有tkinter的按钮函数?

如何修复这些异常以创建一个";浏览「;Python中带有tkinter的按钮函数?,python,button,tkinter,Python,Button,Tkinter,我知道有很多关于如何实现浏览按钮的答案,我用它们来创建以下代码,但是Pycharm仍然抛出我不理解的异常,tkinter代码也没有很好的文档记录 下面是引发异常的代码: import os import fnmatch from tkinter.filedialog import askopenfilename from tkinter import * master = Tk() master.geometry("550x125+10+10") filePath = StringVar(N

我知道有很多关于如何实现浏览按钮的答案,我用它们来创建以下代码,但是Pycharm仍然抛出我不理解的异常,tkinter代码也没有很好的文档记录

下面是引发异常的代码:

import os
import fnmatch
from tkinter.filedialog import askopenfilename
from tkinter import *

master = Tk()
master.geometry("550x125+10+10")

filePath = StringVar(None)
def browseFiles():
    file = askopenfilename(filetypes = (("text files","*.txt"),("all 
    files","*.*")), title = "Choose a File.")

    filePath.set(file)
    for f in file:
        E2.insert(1.0, filePath)
        return

L1 = Label(master, text = "Client Code:")
L1.place(x=10, y=10)
E1 = Entry(master, width = 20)
E1.place(x=80, y=10)
L2 = Label(master, text = "File Name:")
L2.place(x=10, y=40)
E2 = Entry(master, width = 50, textvariable=filePath)
E2.place(x=80, y=40)
B1 = Button(master, text="Browse", width=10, command=browseFiles)
B1.place(x=425, y=37)


master.mainloop()
例外情况如下:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\klighthouse\AppData\Local\Programs\Python\Python36- 
  32\Lib\tkinter\__init__.py", line 1699, in __call__
      return self.func(*args)
  File "C:/Users/klighthouse/PycharmProjects/untitled/Run_EPC.py", line 58, 
  in browseFiles
      E2.insert(1.0, filePath)
  File "C:\Users\klighthouse\AppData\Local\Programs\Python\Python36- 
  32\Lib\tkinter\__init__.py", line 2686, in insert
      self.tk.call(self._w, 'insert', index, string)
  _tkinter.TclError: bad entry index "1.0"
代码会运行,程序也会运行,但我认为异常会减慢速度,所以我希望以某种方式摆脱它们。非常感谢您的帮助。

E2.insert(1.0,filePath)
传递一个双精度
1.0
,但它应该是一个整数。因此,
E2.insert(1,filePath)
修复了您的问题

注意:要在开头插入,应使用
0
而不是
1
(除非它是空的)

askopenfilename
只允许打开单个文件,因此不需要循环,只需编写即可

def browseFiles():
    file = askopenfilename(filetypes = (("text files","*.txt"),("all files","*.*")), title = "Choose a File.")
    E2.insert(0, file)
    return

你能试着用整数(1)代替1.0吗?可能会抛出异常错误会准确地告诉您出了什么问题。不能将浮点数用作条目小部件的索引。将其更改为仅一个会消除异常,但会在文件路径之外向条目框添加“PY_VAR0”。我该如何摆脱它?如果它是空的,我还应该使用1吗?@Kassandstorm如果你想在开头添加,那么我会使用0,只是为了清楚。谢谢你的帮助。不过,它现在正在将“PY_VAR0”添加到文件路径的开头。你知道我该怎么做吗?@kassandrom with
askopenfilename
你只能选择一个文件,因此你不需要循环,可以编写
E2。插入(0,文件)
非常感谢!