整合tkinter whit Sqlite3

时间:2017-10-30 22:58:37

标签: python-3.x tkinter multiple-files

我正在寻找一个建议:我有一个名为main.py的模块,我写了所有的GUI代码。为了避免重复所有的sqlite查询,我编写了所有那些查询而不是其他模块名为admin.py。 所以main.py中有这个代码:

B = tk.Entry()
B1= B.get()

在admin.py中,我有方法validate.That应该使用B变量来进行查询。如:

//Here the function will query the db to see if the value in B1.get() exist//
class myclass()
    def validate(a):
    ....SELECT FROM table WHERE col_val = (a)

这就是麻烦:我不知道如何将B1的值传递给validate方法。可能是这样的:

s= myclass()
s.validate(B1)

可能?

1 个答案:

答案 0 :(得分:0)

我已经完成但我觉得可能会更好。这就是我的方式。对不起,问题我不在电脑里。

有模块main.py

import tkinter as tk
import ingreso
from tkinter import messagebox
from ingreso import myclass    
import sqlite3
 def __init__(self):
            tk.Tk.__init__(self)
            frame = tk.Frame(self,width=380, height=420, bg="white", colormap="new")
            self.fi = tk.Entry(frame)
            self.fi.pack()
            self.dni = tk.Entry(frame)
            self.dni.pack()
            frame.pack()
            self.hi = tk.Button(self,text="guardar", command= self.validate)
            self.hi.pack()

        def validate(self):
            messagebox.showwarning(title="validador",message="Se procedera a validar los campos")
            fi= self.fi.get() #That is that i pass as class argument
            dni= self.dni.get()
            if len(fi)== 0 or len(dni)==0:
                tk.messagebox.showwarning(message="campos requeridos")
            else:
                query = myclass(fi, dni) #Create the objet at instance of class
                val = query.validar()    #Determine if the object exist or not

有模块ingreso.py:

class myclass():
    def __init__(self, a= " ", b= " "):  #There is the attributes of the class
        self.db = db
        self.a = a
        self.b = b

    def validar(self): # here i determine if the objet exist or not
        fi = self.a
        dni = self.b
        conn = sqlite3.connect('ecina.db')
        c = conn.cursor()
        c.execute('''SELECT COUNT(*) FROM admision WHERE fi = (?) AND dni =(?)''', (fi, dni))
        r = c.fetchone()
        number_of_rows=r[0]
        return number_of_rows

这是有效的,但任何建议或更正都会非常感激。谢谢Alot。