Hola, tengo dos codigos en "def asignaturasClick3(event):" que no logro mostrar el campo codigoAsig en el formulario, para poder hacer una actualizacion en la opcion "def actualizar3(self):" .
return self.func(*args)
^^^^^^^^^^^^^^^^
"primer codigo"
codigoAsig.set(codigoAsig[0])
^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'set'
"segundo codigo"
codigoAsig.set(str(tvasignaturas3.item(codigoAsig,"values")[0]))
^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'set'
return self.func(*args)
^^^^^^^^^^^^^^^^
"primer codigo"
codigoAsig.set(codigoAsig[0])
^^^^^^^^^^^^^^
AttributeError: 'list' object has no attribute 'set'
"segundo codigo"
codigoAsig.set(str(tvasignaturas3.item(codigoAsig,"values")[0]))
^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'set'
Código:
import tkinter as tk
from tkinter import StringVar, font, ttk
from tkinter.constants import CENTER, W, E, N, S
from idlelib.tooltip import Hovertip
from tkinter import *
from tkinter import ttk
import pymysql
import pymysql.cursors
import mysql.connector
from conexion3 import *
from tkinter import Menu
ventana = tk.Tk()
#usa archivo conexion3 y se conecta a universidad4.sql
#ventana=Tk()
ventana.geometry("1300x670+0+0")
ventana.title(" M E N U P R I N C I P A L")
ventana.iconbitmap("book.ico")
ventana.resizable(0,0)
def mant_Asignaturas():
db=DataBase()
modificar=False
codigoAsig=StringVar()
nombre=StringVar()
nPeriodos=StringVar()
nomProfesor=StringVar()
opts=StringVar()
options=[]
sql = "SELECT nombres, apellidos, titulo FROM profesores"
db.cursor.execute(sql)
ids = db.cursor.fetchall()
for i in ids:
#options.append(str(i[0])+" - "+i[1]+ " - "+i[2])
options.append(i[0]+" - "+i[1]+ " - "+i[2])
#############################################################################
def asignaturasClick3(event):
srow = tvasignaturas3.focus()
data = tvasignaturas3.item(srow)
#global codigoAsig
codigoAsig = data['values']
#codigoAsig.set(codigoAsig[0])
nombre.set(codigoAsig[1])
nPeriodos.set(codigoAsig[2])
nomProfesor.set(codigoAsig[3])
print("codigo click3", codigoAsig[0:5])
def ignaturasClick3(event):
try:
codigoAsig=tvasignaturas3.selection()[0]
if (codigoAsig)!="":
#codigoAsig.set(str(tvasignaturas3.item(codigoAsig,"values")[0]))
#codigoAsig.set(tvasignaturas3.item(codigoAsig,"text")[0])
nombre.set(str(tvasignaturas3.item(codigoAsig, "values")[1]))
nPeriodos.set(str(tvasignaturas3.item(codigoAsig, "values")[2]))
nomProfesor.set(str(tvasignaturas3.item(codigoAsig, "values")[3]))
print("codigo click3", codigoAsig[0:5])
else:
pass
except IndexError:
pass
##################################################################################################
#def asignaturasClick3(event):
# srow = tvasignaturas3.focus()
# data = tvasignaturas3.item(srow)
# global codigoAsig
# codigoAsig = data['values']
# #codigoAsig.set(codigoAsig[0])
# nombre.set(codigoAsig[1])
# nPeriodos.set(codigoAsig[2])
# nomProfesor.set(codigoAsig[3])
# lblCodigo2=Label(marco3, text="Codigo")
# lblCodigo2.grid(column=0, row=0, padx=5, pady=5)
# txtCodigo2=Entry(marco3, width=50, textvariable=codigoAsig[0:5])
# print("codigo click3", codigoAsig[0:5])
# txtCodigo2.grid(column=1, row=0)
marco3=LabelFrame(ventana, text="Formulario ingreso de asignatura")
marco3.place(x=5,y=20, width=1100, height=600)
lblCodigo=Label(marco3, text="Codigo").grid(column=0, row=0, padx=5, pady=5)
txtCodigo=Entry(marco3, width=50, textvariable=codigoAsig)
txtCodigo.insert(0,"")
txtCodigo.focus_set()
txtCodigo.grid(column=1, row=0)
lblNombre=Label(marco3, text="Nombre asignatura").grid(column=0, row=1, padx=5, pady=5)
txtNombre=Entry(marco3, width=50, textvariable=nombre)
txtNombre.grid(column=1, row=1)
lblNPeriodos=Label(marco3, text="N° Periodos").grid(column=0, row=2, padx=5, pady=5)
txtNPeriodos=Entry(marco3, width=50, textvariable=nPeriodos)
txtNPeriodos.grid(column=1, row=2)
lblNomProfesor=Label(marco3, text="Nombre profesor")
lblNomProfesor.grid(column=0, row=3, padx=5, pady=5)
txtNomProfesor=Entry(marco3, width=50, textvariable=opts)
nomProfesor=opts
txtNomProfesor.grid(column=1, row=3)
mycombobox3=ttk.Combobox(ventana, textvariable=opts, width=30)
mycombobox3.place(x=270,y=135,width=305,heigh=20)
mycombobox3['values'] = ids
btnNuevo3=Button(marco3, text="Guardar", command=lambda: nuevo3(mant_Asignaturas))
btnNuevo3.grid(column=8, row=50)
btnModificar3=Button(marco3, text="Elegir registro", command=lambda: actualizar3(mant_Asignaturas))
hovertip = Hovertip(btnModificar3, "Permite modificar, si asi lo requiere el usuario")
btnModificar3.grid(column=8, row=60)
btnEliminar3=Button(marco3, text="Eliminar", command=lambda: eliminar3())
btnEliminar3.grid(column=8, row=70)
btnCancelar3=Button(marco3, text="Cancelar", command=lambda: limpiar3())
btnCancelar3.grid(column=8, row=80)
btnSalir3=Button(marco3, text="Salir", command=ventana.destroy)
btnSalir3.grid(column=8, row=90)
lblMensaje=Label(marco3, text="Aqui van los mensajes Asignaturas ", fg="blue")
lblMensaje.grid(column=0, row=12, columnspan=4)
tvasignaturas3=ttk.Treeview(marco3, selectmode=NONE)
tvasignaturas3["columns"]=("CODIGOASIG", "NOMBRE", "NPERIODOS", "NOMPROFESOR",)
###############################################
#tvasignaturas3.column("#0", width=0, stretch=NO)
tvasignaturas3.column("CODIGOASIG", width=50, anchor=CENTER)
##########################################
tvasignaturas3.column("CODIGOASIG", width=0, stretch=NO)
tvasignaturas3.column("NOMBRE", width=200, anchor=CENTER)
tvasignaturas3.column("NPERIODOS", width=200, anchor=CENTER)
tvasignaturas3.column("NOMPROFESOR", width=200, anchor=CENTER)
#########################################################################
#tvasignaturas3.heading("#0", text="")
tvasignaturas3.heading("CODIGOASIG", text="codigo asignatura", anchor=CENTER)
###########################################################################
tvasignaturas3.heading("#0", text="CODIGO ASIGNATURA")
tvasignaturas3.heading("NOMBRE", text="NOMBRE ASIGNATURA", anchor=CENTER)
tvasignaturas3.heading("NPERIODOS", text="N°PERIODOS", anchor=CENTER)
tvasignaturas3.heading("NOMPROFESOR", text="NOMBRE PROFESOR", anchor=CENTER)
tvasignaturas3.grid(column=0, row=15, columnspan=4, padx=5)
tvasignaturas3.bind("<<TreeviewSelect>>", asignaturasClick3)
asignaturasViewScrollbar=ttk.Scrollbar(marco3, orient="vertical",command=tvasignaturas3.yview)
tvasignaturas3.configure(yscroll=asignaturasViewScrollbar.set)
asignaturasViewScrollbar.grid(row=15,column=5,sticky="ns")
def modificarFalse():
global modificar
modificar=False
tvasignaturas3.config(selectmode=NONE)
btnNuevo3.config(text="Guardar")
btnModificar3.config(text="Elegir registro")
btnEliminar3.config(state=DISABLED)
def modificarTrue():
global modificar
modificar=True
tvasignaturas3.config(selectmode=BROWSE)
btnNuevo3.config(text="Nuevo")
btnModificar3.config(text="Modificando")
btnEliminar3.config(state=NORMAL)
def validar3():
print("validarr")
return len(codigoAsig.get()) and len(nombre.get()) and len(nPeriodos.get()) and len(nomProfesor.get())
def limpiar3():
codigoAsig.set("")
nombre.set("")
nPeriodos.set("")
nomProfesor.set("")
def vaciar_tabla3():
filas=tvasignaturas3.get_children()
for fila in filas:
tvasignaturas3.delete(fila)
def llenar_tabla3():
vaciar_tabla3()
sql="select * from asignatur"
db.cursor.execute(sql)
filas=db.cursor.fetchall()
for fila in filas:
codigoAsig=fila[0]
tvasignaturas3.insert("", END, codigoAsig, text=codigoAsig, values= fila)
def nuevo3(self):
if modificar==False:
print("antes de validar nuevo")
if validar3():
val=(codigoAsig.get(), nombre.get(), nPeriodos.get(), nomProfesor.get())
sql="insert into asignatur (codigoAsig, nombre, nPeriodos, nomProfesor) values (%s, %s, %s, %s)"
db.cursor.execute(sql, val)
print("los datos sql--->", (val))
db.connection.commit()
lblMensaje.config(text="Se a guardado asignatura correctamente", fg="green")
llenar_tabla3()
limpiar3()
else:
lblMensaje.config(text="los campos no deben estar vacios", fg="red")
else:
modificarFalse()
def actualizar3(self):
if modificar==True:
print("despues de modificar3333")
if validar():
#def updatepaciente(rut, nombre, apellido, email, telefono):
#sql="UPDATE paciente SET nombre='"+str(nombre)+"', apellido='"+str(apellido)+"', email='"+str(email)+"', telefono="+telefono+" WHERE rut='"+str(rut)+"';"
codigoAsig=tvasignaturas3.selection()[0]
print("paso el tvasignaturas", codigoAsig)
val=(codigoAsig.get(), nombre.get(), nPeriodos.get(), nomProfesor.get())
sql="update asignatur set codigoAsig=%s, nombre=%s, nPeriodos=%s, nomProfesor=%s where codigoAsig='"+str(codigoAsig)+"';"
#sql="update asignatur set codigoAsig=%s, nombre=%s, nPeriodos=%s, nomProfesor=%s where codigoAsig="+codigoAsig
#sql="update asignatur set codigoAsig='"+str(codigoAsig)+"', nombre='"+str(nombre)+"', nPeriodos='"+str(nPeriodos)+"', nomProfesor='"+str(nomProfesor)+"' where codigoAsig='"+str(codigoAsig)+"';"
print("el sql:::", sql)
db.cursor.execute(sql, val)
db.connection.commit()
lblMensaje.config(text="Se a actualizado una asignatura correctamente", fg="bluen")
llenar_tabla3()
limpiar3()
else:
lblMensaje.config(text="Ingrese datos, no deben estar vacios", fg="red")
else:
modificarTrue()
def eliminar3():
try:
codigoAsig=tvasignaturas3.selection()[0]
if len(codigoAsig)>0:
sql="delete from asignatur where codigoAsig='"+str(codigoAsig)+"';"
db.cursor.execute(sql)
db.connection.commit()
tvasignaturas3.delete(codigoAsig)
lblMensaje.config(text="Se a eliminado el registro")
limpiar3()
else:
lblMensaje.config(text="Seleccione un registro para eliminar")
except IndexError:
pass
llenar_tabla3()
ventana.mainloop()
def mant_Alumnos():
pass
def mant_Hist_Alumnos():
pass
def mant_Malla():
pass
def mant_Profesores():
pass
barraMenu=Menu(ventana)
ventana.config(menu=barraMenu) ###nueva linea
mnuMantencion=Menu(barraMenu)
mnuProcesos=Menu(barraMenu)
mnuConsulta=Menu(barraMenu)
mnuMantencion.add_command(label="Alumnos", command=mant_Alumnos)
mnuMantencion.add_command(label="Asignaturas", command=mant_Asignaturas)
mnuMantencion.add_command(label="Historico", command=mant_Hist_Alumnos)
mnuMantencion.add_command(label="Malla", command=mant_Malla)
mnuMantencion.add_command(label="Profesores", command=mant_Profesores)
mnuMantencion.add_separator()
mnuMantencion.add_command(label="Salir", command=ventana.destroy)
mnuProcesos.add_command(label="Cambio de semestre")
mnuConsulta.add_command(label="Alumnos por Asignatura")
mnuConsulta.add_command(label="Alumnos por año de ingreso")
mnuConsulta.add_command(label="Asignaturas")
mnuConsulta.add_command(label="Profesores")
barraMenu.add_cascade(label="Mantencion", menu=mnuMantencion)
barraMenu.add_cascade(label="Procesos", menu=mnuProcesos)
barraMenu.add_cascade(label="Consulta", menu=mnuConsulta)
barraMenu.add_command(label="Salir", command=ventana.destroy)
ventana.mainloop()