我正在尝试使用tkinter filedialog.askopenfilename()方法来选择生成器的图像文件。我正在一个类中进行设置,因为这是我发现的“正确”方法。据我所知,这应该是调用它的正确格式,尽管这只是我能找到的一些解释的缩影。
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.pickedfiletypes = (('png files', '*.png'), ('jpeg files', '*.jpeg'))
self.create_widgets()
def create_widgets(self):
...
self.fileselect = tk.filedialog.askopenfilename(self,
initialdir= os.getcwd(),
title= "Please select a file:",
filetypes= self.pickedfiletypes)
...
root = tk.Tk()
app = Application(master=root)
app.mainloop()
TypeError: askopenfilename() takes 0 positional arguments but 1 was given
我看到的所有教程和示例都给出了位置参数。 这是我在pythonspot.com上找到的一个示例,除了不使用变量外,它看起来几乎完全相同。
root.filename = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
答案 0 :(得分:1)
将自己移入
self.fileselect = tk.filedialog.askopenfilename(self,
initialdir= os.getcwd(),
title= "Please select a file:",
filetypes= self.pickedfiletypes)
有效!
答案 1 :(得分:0)
self是因为不需要父级,这是因为askopenfile,askopenfilename或askdirectory创建了窗口。 供参考使用(https://pythonspot.com/tk-file-dialogs/)
self.fileselect = tk.filedialog.askopenfilename(
initialdir= os.getcwd(),
title= "Please select a file:",
filetypes= self.pickedfiletypes)
使用tkFileDialog时,需要使用父级,它没有弹出窗口。
tkFileDialog.Open(parent=self, filetypes=filetypes)
答案 2 :(得分:0)
如果要指定文件对话框窗口的父级,则必须指定它。您可以通过执行parent = self来实现。
self.fileselect = tk.filedialog.askopenfilename(parent = self,
initialdir = os.getcwd(),
title = "Please select a file",
filetypes = (('png files', '*.png',
('jpeg files', '*.jpeg'),))