为什么只有3个,python为什么说有4个参数?

问题描述 投票:-2回答:1

[我正在使用gspread应用编写Tkinter。我相信与电子表格的连接是正确的,因为我可以从中读取数据。我正在使用python 2.7.15和gspread 0.6.2。我得到了错误。如果我在函数调用的末尾忽略了“ RAW”参数,则不会再出现任何错误,但不会将任何内容写入电子表格。

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1550, in __call__
    return self.func(*args)
  File "app.py", line 22, in clicked
    sheet.insert_row(insertRow,index,'RAW')
TypeError: insert_row() takes at most 3 arguments (4 given)

import gspread
from oauth2client.service_account import ServiceAccountCredentials
from Tkinter import *

scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]

creds = ServiceAccountCredentials.from_json_keyfile_name("client_secret.json", scope)

client = gspread.authorize(creds)

sheet = client.open("This").sheet1  # Open the spreadhseet

#data = sheet.get_all_records()  # Get a list of all records

#row = sheet.row_values(3)  # Get a specific row
#col = sheet.col_values(3)  # Get a specific column
#cell = sheet.cell(1,2).value  # Get the value of a specific cell
def clicked():
    index = sheet.row_count
    index+=1
    insertRow = [nametxt.get(),placetxt.get(), phonetxt.get()]
    sheet.insert_row(insertRow,index,'RAW')
window = Tk()
window.title("Registration application")
window.geometry('700x700')
namelbl = Label(window, text="Name",font=("Ubuntu",20))
placelbl = Label(window, text="Place", font=("Ubuntu",20))
phonelbl = Label(window,text="Phone No", font=("Ubuntu",20))
placetxt = Entry(window,width = 20)
nametxt = Entry(window,width=20)
phonetxt = Entry(window,width = 20)
namelbl.grid(column=1, row=1,)
nametxt.grid(column=2, row=1)
placelbl.grid(column=1, row=2)
placetxt.grid(column=2,row=2)
phonelbl.grid(column =1, row=3)
phonetxt.grid(column = 2,row=3)
button = Button(window, text="submit",command=clicked)
button.grid(column=2, row=5)
window.mainloop()

#sheet.update_cell(2,2, "CHANGED")  # Update one cell
python tkinter gspread
1个回答
0
投票

您正在使用旧版本的gspread。在您使用的版本中,insert_row的定义如下所示:

def insert_row(self, values, index=1):

注意如何只接受三个参数:self(在实例上调用时自动传递)以及valuesindex。它不接受任何其他参数。您需要删除RAW参数,代码才能与此版本的库一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.