python - 从标签条目中删除索引
问题描述
该代码从用户那里获取星期输入,在 excel 文件中搜索包含该星期的行,将结果写入不同的 excel 文件,然后在 tkinter 标签上写入列。问题是在 GUI(标签)上显示索引值。如何从 GUI(标签)中隐藏/删除此索引值
import tkinter as tk
from datetime import date, datetime
from tkinter import *
from tkinter import font
from warnings import simplefilter
import openpyxl
import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Alignment
import xlrd
from pandas import ExcelWriter
simplefilter("ignore")
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
wb = openpyxl.load_workbook('excel.xlsx')
sheet = wb["Productie"]
week_number = date.today().isocalendar()[1]
root = tk.Tk()
root.title("Main Menu")
root.geometry("1000x500")
fontmare = font.Font(family='Helvetica', size=14, weight='bold')
var = tk.StringVar()
def exportexcel():
wb_sales = pd.ExcelFile("excel.xlsx")
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
weekenter = var.get()
print(weekenter)
print(sheet_3.query("['6'] in Week"))
global sheetweek
if weekenter == "6":
#sheetweek.set(sheet_3.query("['6'] in Week"))
writer = ExcelWriter('weekexport.xlsx')
sheet_3.query("['6'] in Week").to_excel(writer, 'Foaie1',index=False,)
writer.save()
print(sheet_3.query("['6'] in Week"))
if weekenter == "7":
#sheetweek.set(sheet_3.query("['7'] in Week"))
writer = ExcelWriter('weekexport.xlsx')
sheet_3.query("['7'] in Week").to_excel(writer, 'Foaie1',index=False,)
writer.save()
print(sheet_3.query("['7'] in Week"))
#####################################################################################################
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))
root.mainloop()
def write_to_xlsx():
wb = openpyxl.load_workbook('excel.xlsx')
sheet = wb["Productie"]
week_number = date.today().isocalendar()[1]
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")
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',)
dfM = StringVar()
dfB = StringVar()
dfQ = StringVar()
dfSN1 = StringVar()
dfSN2 = StringVar()
dfM.set("Model")
dfB.set("Batch")
dfQ.set("Cantitate")
dfSN1.set("Serial")
dfSN2.set("Number")
tk.Button(root, text='Submit', command=write_to_xlsx).grid(row=2, column=2, sticky='W')
tk.Button(root, text='Week:', command=exportexcel).grid(row=6, column=0, sticky='W')
entry = tk.Entry(root, textvariable=var, width=10).grid(row=7, column=0, sticky='w')
LabelModel = tk.Label(root, textvariable=dfM, font=fontmare).grid(row=8, column=0,sticky="w")
LabelBatch = tk.Label(root, textvariable=dfB, font=fontmare).grid(row=8, column=1,sticky="w")
LabelQty = tk.Label(root, textvariable=dfQ, font=fontmare).grid(row=8, column=2,sticky="w")
LabelSerial = tk.Label(root, textvariable=dfSN1, font=fontmare).grid(row=8, column=3,sticky="w")
LabelNumber = tk.Label(root, textvariable=dfSN2, font=fontmare).grid(row=8, column=4,sticky="w")
root.mainloop()
解决方案
我有很多想做的事,但我今天没时间了。
index_col=None
根据这篇文章,似乎有一个关于这个问题的错误报告。
我为解决这个问题所做的是将数据转换为字符串,然后将其分解为其组件。一旦有了这些,我就可以再次在其上运行 split() 以摆脱索引。
现在这里是您正在寻找的修复:
代替:
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))
和:
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)
结果:
进一步审查:
有些事情你可能想改变。例如,如果需要,您可以在一行上使用 global all。global var1, var2, var3 ...
但是,在您的代码中根本不需要全局。
您已经动态地构建了条目信息,因此让我们为您的标签和其他变量做同样的事情。
我还注释掉了一些根本没有使用的行,您的代码似乎仍在工作,所以如果您有任何问题,请告诉我。
我删除了未使用的导入,并对您的代码进行了一些常规清理以更紧密地遵循 PEP8。
修改后的代码:
import tkinter as tk
from tkinter import font
from datetime import date, datetime
from openpyxl.styles import Alignment
from warnings import simplefilter
from pandas import ExcelWriter
import pandas as pd
import openpyxl
def 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()
推荐阅读
- docker - 无法使用 Docker 获取本地主机 IP
- html - 绝对div父级内的css div子级
- javascript - 按组对相同的属性对象求和
- react-native - 如何获取从添加到购物车页面传递的产品的 redux 存储数据
- vim - 在vim中通过运动覆盖粘贴
- azure-devops - Azure DevOps ClickOnce Build&Release publish.htm missing
- node.js - Firebase 远程配置不适用于单元测试中的 NodeJS
- prestashop - actionValidateCustomerAddressFormAfter 在 Prestashop 的表单验证之前触发钩子
- mobile - 2020年跨平台APP开发情况如何?
- azure - 如何将文件从工件目录复制到 azure app 服务?