2017-03-15 19 views
0

私はTKinterを使ってGUIアプリケーションを開発しており、ユーザーが入力した情報はOpenpyxlを使ってExcel文書に書き込む必要があります。今のところ、eng_lstオプションメニューから選択した名前を取得し、その名前をGatewayUpgrade2.xlsxブックの連絡先シートのセルA3に書き込もうとしています。これはどうすればできますか?ありがとうございました。GUIからExcelワークシートに情報を書き込む

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() 

答えて

1

値と呼ばれる入力値を必要とUpdateSheet:

これは私が取得エラーです。しかし、あなたの提出ボタンについては、この入力値が何であるべきかを指定しません。だから、

value = ... specify the value here 
self.submit_bttn = Button(self, text = "Submit", command = lambda: self.UpdateSheet(value)).grid(row=10, column=1, sticky=W) 
+0

優秀にライン

self.submit_bttn = Button(self, text = "Submit", command = self.UpdateSheet).grid(row=10, column=1, sticky=W) 

を変更本当にあなたの助けに感謝! – Clyde

関連する問題