将信息从 GUI 写入 Excel 工作表
Write information from GUI to Excel Worksheet
我正在使用 TKinter 开发 GUI 应用程序,用户输入的信息需要使用 Openpyxl 写入 excel 文档。现在,我正在尝试获取从 eng_lst 选项菜单中选择的名称,并将该名称写入 GatewayUpgrade2.xlsx 工作簿的联系人 sheet 的单元格 A3。如何才能做到这一点?谢谢。
这是我得到的错误:
Traceback (most recent call last):
File "C:\Python35\lib\tkinter\__init__.py", line 1559, in __call__
return self.func(*args)
TypeError: UpdateSheet() missing 1 required positional argument: 'value'
from tkinter import *
from tkinter import ttk
import openpyxl
class Application(Frame):
"""GUI app to automate CR creation"""
def __init__(self, master):
"""Initialize the Frame"""
ttk.Frame.__init__(self, master)
self.grid()
self.create_widgets()
def create_widgets(self):
#create instruction label and Entry widget
eng_font=('Lucida Grande', 11)
#CR Number Entry Box
self.cr_label = Label(self, text="CR Number: ", font=eng_font)
self.cr_label.grid(row=0, sticky = E)
self.cr_ent = Entry(self)
self.cr_ent.grid(row=0, column=1, sticky=E)
#create Submit button
self.submit_bttn = Button(self, text = "Submit", command = self.UpdateSheet).grid(row=10, column=1, sticky=W)
#Engineer Selection
self.eng_name = Label(self, text="Select Engineer: ", font=eng_font).grid(row=3, sticky=E)
variable=StringVar(self)
variable.set("")
eng_lst=OptionMenu(self, variable, 'Johnson, Bob', 'Doe, John', 'Doe, Jane')
eng_lst.grid(row=3, column=1, sticky=W)
#CR Start Date & Time
self.date_lbl=Label(self, text="CR Start Date & Time", font=eng_font).grid(row=5,sticky=E)
self.date_ent=Entry(self).grid(row=5, column=1, sticky=E)
self.duration_lbl=Label(self, text="Change Duration", font=eng_font).grid(row=6, sticky=E)
self.duration_ent = Entry(self).grid(row=6, column=1, sticky=E)
#CR Type Selection
self.cr_type_lbl = Label(self, text = 'CR Type', font = eng_font).grid(row=8, sticky=E)
variableType=StringVar(self)
variableType.set("")
cr_type=OptionMenu(self, variableType, 'Gateway Upgrade', 'NIC Replacement', 'Interface Errors', 'Decomm', 'Failover')
cr_type.grid(row=8, column=1, sticky=W)
def UpdateSheet(self, value):
wb=openpyxl.load_workbook('GatewayUpgrade2.xlsx')
wb.get_sheet_by_name('Contacts')
eng_name = value
wb['A3'] = eng_name
#main
root=Tk()
root.title("CR Creation Tool")
root.geometry("400x250")
app = Application(root)
root.mainloop()
UpdateSheet 需要一个名为 value 的输入值。但是对于您没有指定的提交按钮,这个输入值应该是什么。所以改变行
self.submit_bttn = Button(self, text = "Submit", command = self.UpdateSheet).grid(row=10, column=1, sticky=W)
至
value = ... specify the value here
self.submit_bttn = Button(self, text = "Submit", command = lambda: self.UpdateSheet(value)).grid(row=10, column=1, sticky=W)
我正在使用 TKinter 开发 GUI 应用程序,用户输入的信息需要使用 Openpyxl 写入 excel 文档。现在,我正在尝试获取从 eng_lst 选项菜单中选择的名称,并将该名称写入 GatewayUpgrade2.xlsx 工作簿的联系人 sheet 的单元格 A3。如何才能做到这一点?谢谢。
这是我得到的错误:
Traceback (most recent call last):
File "C:\Python35\lib\tkinter\__init__.py", line 1559, in __call__
return self.func(*args)
TypeError: UpdateSheet() missing 1 required positional argument: 'value'
from tkinter import *
from tkinter import ttk
import openpyxl
class Application(Frame):
"""GUI app to automate CR creation"""
def __init__(self, master):
"""Initialize the Frame"""
ttk.Frame.__init__(self, master)
self.grid()
self.create_widgets()
def create_widgets(self):
#create instruction label and Entry widget
eng_font=('Lucida Grande', 11)
#CR Number Entry Box
self.cr_label = Label(self, text="CR Number: ", font=eng_font)
self.cr_label.grid(row=0, sticky = E)
self.cr_ent = Entry(self)
self.cr_ent.grid(row=0, column=1, sticky=E)
#create Submit button
self.submit_bttn = Button(self, text = "Submit", command = self.UpdateSheet).grid(row=10, column=1, sticky=W)
#Engineer Selection
self.eng_name = Label(self, text="Select Engineer: ", font=eng_font).grid(row=3, sticky=E)
variable=StringVar(self)
variable.set("")
eng_lst=OptionMenu(self, variable, 'Johnson, Bob', 'Doe, John', 'Doe, Jane')
eng_lst.grid(row=3, column=1, sticky=W)
#CR Start Date & Time
self.date_lbl=Label(self, text="CR Start Date & Time", font=eng_font).grid(row=5,sticky=E)
self.date_ent=Entry(self).grid(row=5, column=1, sticky=E)
self.duration_lbl=Label(self, text="Change Duration", font=eng_font).grid(row=6, sticky=E)
self.duration_ent = Entry(self).grid(row=6, column=1, sticky=E)
#CR Type Selection
self.cr_type_lbl = Label(self, text = 'CR Type', font = eng_font).grid(row=8, sticky=E)
variableType=StringVar(self)
variableType.set("")
cr_type=OptionMenu(self, variableType, 'Gateway Upgrade', 'NIC Replacement', 'Interface Errors', 'Decomm', 'Failover')
cr_type.grid(row=8, column=1, sticky=W)
def UpdateSheet(self, value):
wb=openpyxl.load_workbook('GatewayUpgrade2.xlsx')
wb.get_sheet_by_name('Contacts')
eng_name = value
wb['A3'] = eng_name
#main
root=Tk()
root.title("CR Creation Tool")
root.geometry("400x250")
app = Application(root)
root.mainloop()
UpdateSheet 需要一个名为 value 的输入值。但是对于您没有指定的提交按钮,这个输入值应该是什么。所以改变行
self.submit_bttn = Button(self, text = "Submit", command = self.UpdateSheet).grid(row=10, column=1, sticky=W)
至
value = ... specify the value here
self.submit_bttn = Button(self, text = "Submit", command = lambda: self.UpdateSheet(value)).grid(row=10, column=1, sticky=W)