2016-10-19 78 views
-1
from sqlite3 import * 

def insert_record(Who, Invented): 

    connection = connect(database = "activity.db") 

    internet = connection.cursor() 

    list = "INSERT INTO Information VALUES((Alexander_Graham, Phone))" 

    internet.execute(list) 

    rows_inserted = internet.rowcount 

    connection.commit() 

    internet.close() 
    connection.close() 

#GUI interface 
from Tkinter import * 
window = Tk() 

the_button3 = Button(window, text='Record', command = insert_record).grid(row=1, sticky=W, padx=100,pady=5) 
window.mainloop() 

好的,所以我想要做的是當我按下Record按鈕時,信息(它分別具有2個字段,分別稱爲Who和Invented)在activity.db中將添加一個記錄Alexander_Graham和電話。Python SQLite TypeError

* activity.db已經在同一文件夾作爲預製的代碼

而是我得到這個錯誤: 類型錯誤:insert_record()到底需要2個參數(給出0)

我如何修理它?

+1

請修正縮進做到這一點。你明白錯誤的含義嗎? – wwii

+0

我的不好。我已經確定了縮進。 – Yasutsuna

回答

0

插入記錄是一個函數,它接受兩個必需的參數,而您並未傳入值。

command = insert_record 

的這個動作一個很好的例子是下面的測試序列:

In [1]: def func(one,two): 
    ...:  return one+two 
    ...: 

In [2]: func() 
------------------------------------------------------------------------- -- 
TypeError         Traceback (most recent call  last) 
<ipython-input-2-08a2da4138f6> in <module>() 
----> 1 func() 

TypeError: func() takes exactly 2 arguments (0 given) 

In [3]: func(1,3) 
Out[3]: 4 

在此功能中,它無法在相同的是爲您的TK應用。您需要提供具有默認值的函數,或以不同的方式處理它。

0

當你按下按鈕,然後tkinter運行函數insert_record()總是沒有任何參數。

您必須定義沒有參數的函數。

def insert_record(): 

或與與默認值即。

def insert_record(Who=None, Invented=None): 

或者你以參數分配功能 - 您可以使用lambda

command=lambda:inser_record("Thomas Edison", "Bulb") 
+0

啊,我明白了。它現在有效。感謝您的解釋。 – Yasutsuna