Я пытаюсь написать код, который открывает папку в файловом проводнике с помощью радиообъектива. Я нашел пример, но я застрял на следующей ошибки:ТипError: askopenfilename() отсутствует 1 обязательный позиционный аргумент: 'root' In []:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files (x86)\Anaconda3\lib\tkinter\__init__.py", line 1550, in __call__
return self.func(*args)
TypeError: askopenfilename() missing 1 required positional argument: 'root'
Это мой код:
from tkinter import*
from tkinter import filedialog
import tkinter.constants
class filedialog(tkinter.Frame):
def __init__(self, root):
tkinter.Frame.__init__(self, root)
Radiobutton_opt = {'fill': tkinter.constants.BOTH, 'padx': 5, 'pady': 5}
tkinter.Radiobutton(self, text = "Browse",
command = self.askopenfilename
).grid(row=2, column =0, columnspan = 2, sticky =W)
self.file_opt = options = {}
self.dir_opt = options = {}
options['initialdir'] = 'C:\\Users\\Documents\\Python Scripts'
def askopenfilename(self, root):
filename = filedialog().askopenfilename(**self.file_opt)
if filename:
return open(filename, 'r')
def askdirectory(self, root):
return filedialog.askdirectory(**self.dir_opt)
if __name__=='__main__':
root = Tk()
filedialog(root).grid()
root.mainloop()
кнопка появляется, но когда я нажимаю, я получаю сообщение об ошибке. Я новичок в python и буду признателен за любую помощь.
Спасибо за оперативную реакцию. Я понимаю, что вы говорите, но я не знаю, как реализовать это в своем коде. Не могли бы вы добавить пример? – Cucumber12
@ Cucumber12: просто удалите 'root' из' def askopenfilename (self, root) ', так как вы никогда его не используете. Затем переименуйте 'filedialog' в другое. –
Я фактически добавил корень в 'askopenfilename (self), чтобы избавиться от ошибки:' TypeError: __init __() отсутствует 1 обязательный позиционный аргумент: 'root' 'Я начинаю думать, что мой код не хорош :) – Cucumber12