Remove index from Label entry Remove index from Label entry tkinter tkinter

Remove index from Label entry


There is a lot I would like to do but I am running out of time today.

There appears to be a bug report about this problem with index_col=None according to this post.

Related bug reports: GH18792 and GH20480

What I did to get around this issue is to convert the data to a string then break it down into its components. Once I had those I could run a split() again on it to get rid of the index's.

For now here is the fix you are looking for:

Replace:

global dfM    global dfB    global dfQ    global dfSN1    global dfSN2    dfM.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None,  usecols="D",index_col=None))    dfB.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="E",index_col=None))    dfQ.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="F",index_col=None))    dfSN1.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="G",index_col=None))    dfSN2.set(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1', header=None, usecols="H",index_col=None))

With:

var_lst = [dfM, dfB, dfQ, dfSN1, dfSN2]for ndex, i in enumerate(['D', 'E', 'F', 'G', 'H']):    final_string = ''    build_list = str(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1',                                   header=None, usecols=i, index_col=None)).split('\n')    for string in build_list:        x = ' '.join(string.split()).split()        if len(x) > 1:            final_string = '{} {}\n'.format(final_string, ' '.join(string.split()).split()[1])    var_lst[ndex].set(final_string)

Results:

enter image description here

On further review:

There are some thing you may want to change. For example you can use global all on one line if need be. global var1, var2, var3 ... howeve in your code global is not needed at all.

You already built your entry information dynamically so lets do the same for your labels and other vars.

I have also commented out a few lines that were not being used at all and you code appears to be still working so let me know if you have any issues.

I removed imports that were not being used and did some general cleanup of your code to more closely follow PEP8.

Revised code:

import tkinter as tkfrom tkinter import fontfrom datetime import date, datetimefrom openpyxl.styles import Alignmentfrom warnings import simplefilterfrom pandas import ExcelWriterimport pandas as pdimport openpyxldef export_excel():    # wb_sales = pd.ExcelFile("excel.xlsx")   # line not used    sheet_3 = pd.read_excel("excel.xlsx", sheet_name=2, dtype=str)    pd.set_option('display.max_rows', 500)    pd.set_option('display.max_columns', 500)    pd.set_option('display.width', 500)    # read_sheets_name = wb_sales.sheet_names  # line not used    weekenter = var.get()    if weekenter == "6":        writer = ExcelWriter('weekexport.xlsx')        sheet_3.query("['6'] in Week").to_excel(writer, 'Foaie1', index=False)        writer.save()    if weekenter == "7":        writer = ExcelWriter('weekexport.xlsx')        sheet_3.query("['7'] in Week").to_excel(writer, 'Foaie1', index=False)        writer.save()    for ndex, i in enumerate(['D', 'E', 'F', 'G', 'H']):        final_string = ''        build_list = str(pd.read_excel('weekexport.xlsx', sheet_name='Foaie1',                                       header=None, usecols=i, index_col=None)).split('\n')        for string in build_list:            x = ' '.join(string.split()).split()            if len(x) > 1:                final_string = '{} {}\n'.format(final_string, ' '.join(string.split()).split()[1])        var_list[ndex].set(final_string)def write_to_xlsx():    wb = openpyxl.load_workbook('excel.xlsx')    sheet = wb["Productie"]    # week_number = date.today().isocalendar()[1]  # line not used.    ws = wb.active    maxim = ws.max_row + 1    for i in range(8):        ws.merge_cells(start_row=maxim, start_column=i+1, end_row=maxim + 1, end_column=i+1)  # A    ws.merge_cells(start_row=maxim, start_column=24, end_row=maxim + 1, end_column=24)  # X    ws.merge_cells(start_row=maxim, start_column=25, end_row=maxim + 1, end_column=25)  # Y    week_number = date.today().isocalendar()[1]    ws.cell(column=1, row=maxim, value=week_number)    now = datetime.now()    dt_string = now.strftime('%d/%m')    ws.cell(column=2, row=maxim, value=dt_string)    for ndex, entry in enumerate(entry_list):        ws.cell(column=ndex+3, row=maxim, value=entry_list[ndex].get())        entry_list[ndex].delete(0, 'end')    rows = range(1, maxim + 1)    columns = range(1, 8)    for row in rows:        for col in columns:            sheet.cell(row, col).alignment = Alignment(horizontal='center', vertical='center', wrap_text=True)    wb.save("excel.xlsx")root = tk.Tk()root.title("Main Menu")root.geometry("1000x500")font_mare = font.Font(family='Helvetica', size=14, weight='bold')var = tk.StringVar()simplefilter("ignore")wb = openpyxl.load_workbook('excel.xlsx')sheet = wb["Productie"]week_number = date.today().isocalendar()[1]label_list = ['Model', 'Etapa', 'Batch', 'Cantitate', 'S/N']entry_list = []for i in range(len(label_list)):    tk.Label(root, text=label_list[i]).grid(row=i, column=0, sticky='w')    entry_list.append(tk.Entry(root, width=10))    entry_list[-1].grid(row=i, column=1, sticky='w')tk.Button(root, text='Submit', command=write_to_xlsx).grid(row=2, column=2, sticky='W')tk.Button(root, text='Week:', command=export_excel).grid(row=6, column=0, sticky='W')entry = tk.Entry(root, textvariable=var, width=10).grid(row=7, column=0, sticky='w')label_list_2 = ['Model', 'Batch', 'Cantitate', 'Serial', 'Number']var_list = []for ndex, i in enumerate(label_list_2):    var_list.append(tk.StringVar(root))    var_list[-1].set(i)    tk.Label(root, textvariable=var_list[-1], font=font_mare).grid(row=8, column=ndex, sticky="w")root.mainloop()