Я работаю над довольно длинным куском кода для автоматической генерации счетов. Данные хранятся на листе Excel и загружаются через панды через окно Tkinter (также выбран каталог сохранения).
Это работало нормально, пока я не попытался убрать вещи, внедрив вещи Tkinter / pandas в функцию, содержащую цикл while. Теперь, примерно в 50% случаев, окно консоли CMD зависает, если только не нажата клавиша, что приводит к путанице позже, когда есть 'input ()'.
Я бы очень хотел решить эту проблему, так как хочу развить сторону Tkinter, чтобы сделать ее более удобной для пользователя.
Вот две функции и их вызовы, я могу включить любые дополнительные фрагменты кода, которые будут сочтены необходимыми при необходимости. Обратите внимание, что есть цикл while, так как часто пользователь забывает закрыть лист Excel, и python не загружает его, поэтому появляется сообщение об ошибке, и пользователю предоставляется второй шанс.
def open_Info_Sheet():
while 1:
print('PLEASE SELECT THE INVOICE INFORMATION SHEET')
Tk().withdraw()
filename = askopenfilename(title='PLEASE SELECT THE INVOCE INFORMATION SHEET') # show an "Open" dialog box and return the path to the selected file
try:
df = pandas.read_excel(filename)
except:
print('--------------------------------------------------------')
print("||||||| FAILED TO OPEN INVOICE INFORMATION SHEET |||||||\n\n1) Did you select the correct file?\n2) Is the invoice sheet currently open?\n3) Did you close the pop-up window?\n")
continue
break
print("INVOICE INFORMATION SHEET LOADED")
return df
def open_Directory():
while 1:
Tk().withdraw()
savedirectory = askdirectory(title='PLEASE SELECT A FOLDER')
if len(savedirectory) > 0:
break
return savedirectory
savedirectory = open_Directory()
dirlist = os.listdir(savedirectory)