Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将信息从GUI发送到excel电子表格?下面是我的代码_Python_User Interface_Button_Tkinter - Fatal编程技术网

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

Python 如何将信息从GUI发送到excel电子表格?下面是我的代码,python,user-interface,button,tkinter,Python,User Interface,Button,Tkinter,我希望用户使用我创建的GUI将信息保存到本工作手册中 from tkinter import * from openpyxl import * 我知道“提交”按钮需要一个命令,但我不确定从哪里开始执行。我希望用户点击提交,数据进入excel工作表,然后在GUI窗口中,我希望它清除内容或自动关闭 master = Tk() wb = load_workbook('C:\\Users\\broc\\PycharmProjects\\GLTDB\\gltdb.xlsx') sheet = wb.ac

我希望用户使用我创建的GUI将信息保存到本工作手册中

from tkinter import *
from openpyxl import *
我知道“提交”按钮需要一个命令,但我不确定从哪里开始执行。我希望用户点击提交,数据进入excel工作表,然后在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按钮

# 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()
接下来,更新您的名称,并遵循此模板(或类似模板)为您的可变标签条目项创建。如问题注释中所述,在创建实例的同一行中调用网格可能会导致问题。与其说标签是静态的(在本例中),不如说标签是静态的,但输入框上的get()方法将返回错误“'NoneType'对象没有属性get()

您可以将下一部分添加到submit函数中,或者创建一个ClearEntryBox函数,以便在insert()函数完成时调用

#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) 
insert命令正在尝试写入下一行(标题为列),而您的标题设置为#Excel工作表位置下的行标签,这应该与您的insert函数格式相匹配。。。或者通过添加到列而不是行来翻转插入函数以匹配位置

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

“我知道提交按钮需要一个命令”:为什么不这样做?阅读
submit=按钮(master,text=“submit”).grid(行=5,列=1,棒=W,棒=4)
不要这样做。提交将设置为无。将.grid放在一个新行上,如
submit.grid()
。所有标签都相同。这可能会解释为什么
date.get
调用不起作用。
#to clear entry fields
dateEntry.delete(0,'end')
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()
.
.
.