Enter data into entry with keypad not keyboard

hello friends
i want to comminucate between keypad & tkinter.
i used from ‘sql’ to create a data table.how can i enter my data into ‘id’ entry by keypad not keyboard?
i got the error ‘‘cursor object doesnt have ‘set’ or ‘insert’ attribute’’ while using command ‘c.set’ and ‘c.insert’ (c is ‘id’ entry)
then what shoud i do?
please help

#!/usr/bin/python3.2
 
# https://www.raspberrypi.org/forums/viewtopic.php?f=32&t=100039
 
from tkinter import *
import RPi.GPIO as GPIO
import sqlite3
 
conn = sqlite3.connect('database.db')
c = conn.cursor()
 
#sudo python3.2 test3.py
 
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)         
 
MATRIX=[[1,2,3,'A'],
        [4,5,6,'B'],
        [7,8,9,'C'],
        ['*',0,'S','D']]
ROW=[7,11,13,15]
COL=[12,16,18,22]
for j in range(4):
    GPIO.setup(COL[j],GPIO.OUT)
    GPIO.output(COL[j],1)
for i in range(4):
    GPIO.setup(ROW[i],GPIO.IN,pull_up_down=GPIO.PUD_UP)
##global cl1
##global cl2
class App:
    def __init__(self,master):
##        frame = Frame(master)
##        frame.pack()
        self.master=master
        a= StringVar()
        b= StringVar()
        a1= StringVar()
        b1= StringVar()
        c= StringVar()
 
 
        self.button = Button(self.master,text="open", fg="red", command=self.ouvrir)
        self.button.pack(side=LEFT)
 
        self.button2 = Button(self.master,text="create", command=self.tabluh)
        self.button2.pack(side=LEFT)
 
        self.button3 = Button(self.master,text="close DB", command=self.fermer)
        self.button3.pack(side=LEFT)
 
        self.button31=Button(self.master,text="Exit",fg='red',command=self.exit)
        self.button31.pack(side=LEFT)
 
        self.button4 = Button(self.master,text="insert rec", command=self.insertar)
        self.button4.pack(side=LEFT)
 
        self.button5 = Button(self.master,text="list rec", command=self.listar)
        self.button5.pack(side=LEFT)
 
        self.a = Entry(self.master) 
        self.a.pack(side=BOTTOM)
 
        self.b = Entry(self.master) 
        self.b.pack(side=BOTTOM)
 
        self.c = Entry(self.master) 
        self.c.pack(side=BOTTOM)
##    def runit():
##                global cl1
##                global cl2
##                global go
##                for j in range(4):
##                    GPIO.output(COL[j],0)
##                    for i in range(4):
##
##                        if GPIO.input(ROW[i])==0:
##
##                            print (MATRIX[i][j]),
##                            self.c.insert(10,MATRIX[i][j])
##                            
##                            
##                            while(GPIO.input(ROW[i])==0):
##                                pass
##    ##                time.sleep(0.1)
##                    GPIO.output(COL[j],1)
##                  
####                root.after(10,runit)
####    root.after(10,runit)    
         
    def ouvrir(self):
        self.con=sqlite3.connect('maddb')
        self.cur=self.con.cursor()
    def tabluh(self):
         
        c.execute('''CREATE TABLE xxx(id INTEGER,firs stringvar(10),las stringvar(10))''')
    def fermer(self):
        self.con.close()
    def insertar(self):
        a1=self.a.get()
        b1=self.b.get()
        c1=int(self.c.get())
        c.execute("INSERT INTO xxx (id, firs,las ) VALUES (?, ?, ?)",(c1, a1, b1))
        conn.commit()
    def listar(self):
##        c.execute('SELECT * FROM xxx')
##        print(c.fetchall())
        root2=Toplevel(self.master)
        mygui=records(root2)
    def exit(self):
        #Exit protocol for the exit button. This part is completely done.#
          self.master.destroy()
 
##    App.after(10,runit)
     
class records():
     #class created to see records that have been previously inputted#
    def __init__(self,master):
        self.master=master
##        self.master.geometry('250x200+100+200')
        self.master.geometry('400x200')
        self.master.title('Records')
        self.connection = sqlite3.connect('database.db')
        self.cur = self.connection.cursor()
        self.dateLabel = Label(self.master, text="ID", width=10)
        self.dateLabel.grid(row=0, column=0)
        self.BMILabel = Label(self.master, text="firstname", width=10)
        self.BMILabel.grid(row=0, column=1)
        self.stateLabel = Label(self.master, text="lastname", width=10)
        self.stateLabel.grid(row=0, column=2)
        self.button6 = Button(self.master,text="Delete", command=self.delete_item)
        self.button6.grid(row=1, column=3)
        self.showallrecords()
 
    def showallrecords(self):
        data = self.readfromdatabase()
        for index, dat in enumerate(data):
            Label(self.master, text=dat[0]).grid(row=index+1, column=0)
            Label(self.master, text=dat[1]).grid(row=index+1, column=1)
            Label(self.master, text=dat[2]).grid(row=index+1, column=2)
 
    def readfromdatabase(self):
        self.cur.execute("SELECT * FROM xxx")
        return self.cur.fetchall()
    def delete_item(self):
        """
        delete a selected line from the listbox
        """
        try:
            # get selected line index
            index = self.master.curselection()[0]
            self.master.delete(index)
        except IndexError:
            pass    
 
  
def runit():
            global cl1
            global cl2
            global go
            for j in range(4):
                GPIO.output(COL[j],0)
                for i in range(4):
 
                    if GPIO.input(ROW[i])==0:
 
                        print (MATRIX[i][j]),
                        c.set(10,MATRIX[i][j])
                         
                         
                        while(GPIO.input(ROW[i])==0):
                            pass
##                time.sleep(0.1)
                GPIO.output(COL[j],1)
               
            root.after(10,runit)
             
     
##def labelshow():
##    if cl1 == 1:
##        label1.pack()
##        label1.update()
##        root.after(500)
##        label1.pack_forget()
##        
##    
##    root.after(20,labelshow)    
     
    
root = Tk()
root.after(10,runit)
app=App(root)
 
 
root.mainloop()

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.