【问题标题】:float(export_entry.get()) AttributeError: 'NoneType' object has no attribute 'get'float(export_entry.get()) AttributeError: 'NoneType' 对象没有属性 'get'
【发布时间】: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 文件)?

标签: python excel pandas


【解决方案1】:

我看不到您在哪里导入或定义“export_entry”。

通常当我有 AttributeError:NoneType 错误消息时,这意味着我的变量没有定义。这就是脚本无法执行 'get()' 的原因。

在这种情况下,我怀疑这是问题所在。

【讨论】:

  • export_entry = tk.Entry(root).grid(row=4, column=2, sticky='e', padx=10)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 2022-07-21
  • 2020-01-25
  • 2019-08-14
  • 1970-01-01
  • 2019-01-01
  • 2021-12-26
相关资源
最近更新 更多