【发布时间】:2020-02-25 03:09:54
【问题描述】:
我想在 GUI 中显示(作为标签或消息)来自 excel 文件的特定行。在这种情况下,用户将输入他想查看的星期。 In this case 5。但我得到错误 F = float(export_entry.get()) AttributeError:“NoneType”对象没有属性“get” (我知道我有我不使用的库,但此时可以留在那里) (我正在使用代码在 excel 中输入数据,但该部分工作正常)
这是代码
import tkinter as tk
from datetime import date, datetime
from tkinter import *
from warnings import simplefilter
import openpyxl
import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Alignment
import xlrd
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")
class WritableStringVar(tk.StringVar):
def write(self, added_text):
new_text = self.get() + added_text
self.set(new_text)
def clear(self):
self.set("")
def hello():
wb_sales = pd.ExcelFile("excel.xlsx")
#sheet_1 = pd.read_excel("excel.xlsx", sheet_name= 0)
#sheet_2 = pd.read_excel("excel.xlsx", sheet_name= 1)
sheet_3 = pd.read_excel("excel.xlsx", sheet_name= 2)
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
F = float(export_entry.get())
C =(sheet_3.query('["F"] in Week'))
export_entry["text"]=str(C)
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', padx=15)
entry_list.append(tk.Entry(root, width=20))
entry_list[-1].grid(row=i, column=1, sticky='w', padx=15)
tk.Button(root, text='Submit', command=write_to_xlsx).grid(row=1, column=2, sticky='e', padx=10)
tk.Button(root, text='Export', command=hello).grid(row=2, column=2, sticky='e', padx=10)
week_label =tk.Label(root,text="week:").grid(row=3, column=2, sticky='e', padx=10)
export_label =tk.Label(root)
export_entry = tk.Entry(root).grid(row=4, column=2, sticky='e', padx=10)
root.mainloop()
【问题讨论】:
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)应包括所需的行为、特定问题或错误和在问题本身中重现它所需的最短代码。没有明确的问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable Example。具体来说,您能否将代码缩减为一个独立的示例,该示例不需要任何外部文件(如 Excel 文件)?