如何从GUI发送信息到Excel电子表格?下面是我的代码

from tkinter import *
from openpyxl import *

我想由用户使用创建的GUI将信息保存到此工作簿中。

master = Tk()
wb = load_workbook('C:\\Users\\broc\\PycharmProjects\\GLTDB\\gltdb.xlsx')
sheet = wb.active

# Excel sheet location
sheet.cell(row=1,column=1).value = "Date"
sheet.cell(row=2,column=1).value = "Production Hour"
sheet.cell(row=3,column=1).value = "Production"
sheet.cell(row=4,column=1).value = "Scrap"
sheet.cell(row=5,column=1).value = "Operators"




# Function to take data from GUI put into Excel


def insert():
    if (date.get() == "" and
        prodhour.get() == "" and
        production.get() == "" and
        scrap.get() == "" and
        operators.get() == ""):

        print("empty input")

    else:

        current_row = sheet.max_row
        current_column = sheet.max_column

        sheet.cell(row=current_row + 1,column=1).value = date.get()
        sheet.cell(row=current_row + 1,column=2).value = prodhour.get()
        sheet.cell(row=current_row + 1,column=3).value = production.get()
        sheet.cell(row=current_row + 1,column=4).value = scrap.get()
        sheet.cell(row=current_row + 1,column=5).value = operators.get()

        wb.save('C:\\Users\\broc\\PycharmProjects\\GLTDB\\gltdb.xlsx')
        date.focus_set()

        clear()

# GUI
master.title("Enter Production results here.")
master.geometry("350x200")
master.config(background='lightblue',borderwidth=5)

# Labels for GUI
date = Label(master,text="Date",bg='lightblue').grid(row=0)
prodhour = Label(master,text="Production Hour",bg='lightblue').grid(row=1)
production = Label(master,text="Production",bg='lightblue').grid(row=2)
scrap = Label(master,text="Scrap",bg='lightblue').grid(row=3)
operators = Label(master,text="Operators",bg='lightblue').grid(row=4)

# Entries for GUI
date = Entry(master).grid(row=0,column=1)
prodhour = Entry(master).grid(row=1,column=1)
production = Entry(master).grid(row=2,column=1)
scrap = Entry(master).grid(row=3,column=1)
operators = Entry(master).grid(row=4,column=1)

我知道Submit按钮需要一个命令,但是我不确定从哪里开始进行此操作。我希望用户点击“提交”并将数据转到excel表,然后在GUI窗口中我希望它清除内容或自动关闭。

# Command Buttons
submit = Button(master,text="Submit").grid(row=5,column=1,stick=W,pady=4)
Button(master,text='Cancel',command=master.quit).grid(row=5,column=2,sticky=W,pady=4)
mainloop()
qhuhz 回答:如何从GUI发送信息到Excel电子表格?下面是我的代码

在提交按钮上添加一个命令以调用您的插入函数。

#modify the submit button
submitBtn = Button(master,text="Submit",command = insert)
submitBtn.grid(row=5,column=1,stick=W,pady=4)

接下来更新您的名称,并按照此模板(或类似模板)输入变量标签条目。如您的问题注释中提到的,在与实例创建相同的行中调用网格可能会导致问题。带有标签的标签不像是静态标签(在这种情况下)多,但输入框上的get()方法将返回错误“'NoneType'对象没有属性get()”。

#Entry field initialize variable 
date = StringVar()
# create entry widget and tie it to variable
dateLabel = Label(...)
dateEntry = Entry(master,textvariable = date)
dateLabel.grid(row = 0,column = 0)
dateEntry.grid(row = 0,column = 1) 

您可以将此下一部分添加到您的Submit函数中,或创建一个clearEntryBoxes函数以在insert()函数完成时调用。

#to clear entry fields
dateEntry.delete(0,'end')

insert命令正在尝试在下一行(标题为列)中进行写操作,而您的标题设置为#Excel工作表位置下的行标签时,应使用此格式以匹配您的插入函数格式...或翻转您的插入函数通过添加到列而不是行来匹配位置

sheet.cell(row=1,column=1).value = "Date"
sheet.cell(row=1,column=2).value = "Production Hour"
.
.
.

sheet.cell(row=1,column=current_column + 1).value = dateEnt.get()
sheet.cell(row=2,column=current_column + 1).value = prodhourEnt.get()
.
.
.
本文链接:https://www.f2er.com/3106403.html

大家都在问