【发布时间】:2020-06-09 15:21:32
【问题描述】:
代码获取用户输入的星期,在 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()
【问题讨论】:
-
我已经看到了一个主要问题。你有 2 个主循环。您只需要一个
Tk()和一个mainloop()实例。 -
是的,刚刚发现它,它是从代码的前一部分中删除的。谢谢
-
您有我们可以使用的示例数据集吗?由于我的测试 excel 中不存在
week数据,我很难进行测试。 -
这是提取数据的主文件(放在程序所在的文件夹中),代码将在同一文件夹中创建另一个。
标签: python excel pandas tkinter