Tkinter文件对话框askopenfilename设置

时间:2019-04-03 06:22:09

标签: python tkinter

我正在尝试使用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","*.*")))

3 个答案:

答案 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'),))