Я застрял, пытаясь понять это. Я смотрел на другие потоки stackoverflow по этому вопросу, и до сих пор не могу решить это. Почему мой код не работает в первый раз, когда я запускаю его, когда я открываю PyCharm, но он работает во второй раз?
В первый раз, когда я всегда получаю ошибку " TypeError: calcFolders () отсутствует 1 обязательный позиционный аргумент: 'self'"
Эта программа представляет собой простое приложение Tkinter, которое позволяет генерировать папки с именами с любым префиксом и инкрементным суффиксом. FOLDER_1, FOLDER_2, FOLDER_3 и т. Д. c.
from tkinter import *
from tkinter import ttk
import folderNames
import createDirs
root = Tk()
root.title("Create Folders")
mainframe = ttk.Frame(root, padding="3 3 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
directory = StringVar()
adirectory = StringVar()
prefix = StringVar()
startN = IntVar()
endN = IntVar()
useDir = StringVar()
def calcFolders(self):
try:
if len(adir_entry.get())==0:
useDir = dir_entry.get()
else:
useDir = "C:\\Data\\92175\\My Documents\\ARTS\\ACTION\\"+adir_entry.get()+"\\"
a = folderNames.getf(start_entry.get(), end_entry.get(), pref_entry.get())
createDirs.createD(useDir,a)
except ValueError:
pass
dir_entry = ttk.Entry(mainframe, width=14, textvariable = directory)
dir_entry.grid(column=2, row=1, sticky=(W, E))
adir_entry = ttk.Entry(mainframe, width=14, textvariable = adirectory)
adir_entry.grid(column=2, row=2, sticky=(W, E))
pref_entry = ttk.Entry(mainframe, width=14, textvariable = prefix)
pref_entry.grid(column=2, row=3, sticky=(W, E))
start_entry = ttk.Entry(mainframe, width=14, textvariable = startN)
start_entry.grid(column=2, row=4, sticky=(W, E))
end_entry = ttk.Entry(mainframe, width=14, textvariable = endN)
end_entry.grid(column=4, row=4, sticky=(W, E))
ttk.Label(mainframe, text="Directory").grid(column=1, row=1, sticky=E)
ttk.Label(mainframe, text="or: ARTS # such as \"A0380\"").grid(column=1, row=2, sticky=E)
ttk.Label(mainframe, text="Prefix").grid(column=1, row=3, sticky=E)
ttk.Label(mainframe, text="Start").grid(column=1, row=4, sticky=E)
ttk.Label(mainframe, text="End").grid(column=3, row=4, sticky=E)
ttk.Button(mainframe, text="CREATE", command=calcFolders).grid(column=1, row=4, sticky=N)
for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)
dir_entry.focus()
root.bind('<Return>', calcFolders)
root.mainloop()