我正在寻找一个建议:我有一个名为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)
可能?
答案 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。