python - 如何在python类中获取“条目”的信息
问题描述
我不是 python 专家,需要帮助管理 python 和 GUI(Tkinter)中的类我有 3 个文件和 3 个不同的类(Validacion 类、Ventana 类、Ejecutar 类),需要用我的数据库进行查询,我得到错误“'Validacion'对象没有属性'_tk'”。这是我的代码:
from tkinter import *
from Ventana import *
from tkinter import messagebox
class Validacion:
miidvendedor = StringVar
minombrevendedor = StringVar
def __init__ (self):
self.validacion = Tk()
self.validacion.title("Inventario")
self.validacion.geometry("400x200")
self.validacion.resizable(0, 0)
self.validacion.iconbitmap("icono.ico")
self.validacion.config(background='lavender')
self.miFrame = Frame(self.validacion)
self.miFrame.pack()
self.miFrame.config(backgroun='lavender')
cuadronombrevendedor = Entry(self.miFrame, textvariable=self.minombrevendedor)
cuadronombrevendedor.grid(row=0, column=1, sticky="w", padx=10, pady=10)
cuadroidvendedor = Entry(self.miFrame, textvariable=self.miidvendedor)
cuadroidvendedor.config(show="*")
cuadroidvendedor.grid(row=1, column=1,sticky="w", padx=10, pady=10)
mensajenombre = Label(self.miFrame, text="Nombre Vendedor:")
mensajenombre.config(bg='lavender', font=("Bodoni MT", 14))
mensajenombre.grid(row=0, column=0,sticky="nsew", padx=10, pady=10)
mensajeid = Label(self.miFrame, text="ID Vendedor:")
mensajeid.config(bg='lavender', font=("Bodoni MT", 14))
mensajeid.grid(row=1, column=0, sticky="nsew", padx=10, pady=10)
enter = Button(self.miFrame, text="Enter", bg="gray30", fg="white", command=self.validar)
enter.grid(row=2, column=1, sticky="nsew",padx=10, pady=10 )
self.validacion.mainloop()
def validar(self):
try:
id = self.miidvendedor.get(self)
nombre = self.minombrevendedor.get(self)
connectiondb = pymysql.Connection(host=HOST, port=PORT, user=USER, passwd=PASSWORD, db=DB,)
micursor = connectiondb.cursor()
query = "SELECT * FROM vendedor WHERE idvendedor = '%s'" % id
micursor.execute(query)
tupla = micursor.fetchall()
for i in tupla:
if i[1] == nombre:
objeto = Ventana()
self.validacion.withdraw()
else:
messagebox.showerror("Error","Datos erroneos")
connectiondb.commit()
micursor.close()
connectiondb.close()
except Exception as e:
messagebox.showerror("Conection Data Base", e)```
解决方案
问题是你如何定义你的班级。当您定义一个类时,您使用的对象是您想要继承的属性,在这种情况下,我理解您希望 Class Validacion 成为一个 TK 对象,从这个意义上说:
from tkinter import *
from Ventana import *
from tkinter import messagebox
class Validacion(Tk):
miidvendedor = StringVar
minombrevendedor = StringVar
def __init__ (self,*args, **kwargs):
super(Validacion ,self).__init__(*args, **kwargs)
self.title("Inventario")
self.geometry("400x200")
self.resizable(0, 0)
self.iconbitmap("icono.ico")
self.config(background='lavender')
self.miFrame = Frame()
self.miFrame.pack()
self.miFrame.config(background='lavender')
请注意,self.ventana
更改只是self
因为我们将 Class Validacion 定义为 TK 的子类,因此它继承了它的所有属性和属性,这些属性和属性在__init__
函数中发生了更改。
希望这可以帮助!
推荐阅读
- mysql - 使用带有后缀的自定义 id 生成器时出现休眠错误
- azure-data-factory - Azure 数据工厂数据集
- node.js - 在 Mongoose findOneAndUpdate 中,我怎样才能使我的发布请求工作?
- duplicates - Magento 2 自定义模块管理网格项目重复
- html - 输入值在 jquery 中未更新
- bash - 检查当前用户是否不同于 bash 脚本中的默认用户
- html - DIV 内带有背景的元素,圆角溢出
- flutter - Flutter中自定义下拉小部件如何实现setState
- python - 具有模式功能的块减少(下采样)3D 数组
- python - Discord.py - 我怎样才能只为在线/dnd/空闲成员发送私人消息,而不是根本不发送?