25-09-2019, 08:02 PM
Buenas:
Os pongo aquí un código simple para que veáis dónde puede estar el problema. (He intentado que fuera corto pero es que si no no hay manera de explicarlo bien).
Bueno, la identación no funciona con un copia y pega desde Geany pero el código funciona.
Bien, en principio todo funciona correctamente. Se abre el notebook, y puedes poner el nombre y apellidos y una vez das al botón validar deshabilita los ENTRYS para que no se borren por error. Si le das a modificar también funciona correctamente y vuelve a habilidar los ENTRYS para que realices modificaciones en el mismo.
El problema viene si añades más de una pestaña. Es decir abres la aplicación y en vez de poner nombre y apellidos en la primera pestaña añades otra directamente.(Botón añadir). Bien hasta aquí todo parece funcionar, pero si yo pulso el botón validar, la única pestaña que se valida es la última es decir la que has añadido y yo lo que quiero es que me haga la validación en la pestaña que tenga seleccionada). No importa qué pestaña tengas seleccionada, siempre realiza las "modificaciones" en la última que hayas añadido.
Muchas gracias de antemano.
Os pongo aquí un código simple para que veáis dónde puede estar el problema. (He intentado que fuera corto pero es que si no no hay manera de explicarlo bien).
Código:
import tkinter as tk
from tkinter import ttk
from datetime import *
from tkinter import messagebox
import time
import calendar
import psycopg2
import threading
from threading import Timer
import os
import sys
class Prueba:
def __init__(self):
self.principal = tk.Tk()
self.principal.title("Prueba NOTEBOOK")
self.principal.geometry('600x600')
# FUNTIONS
def addcliente():
self.pest2 = ttk.Frame(self.note)
self.note.add(self.pest2, text='CLIENTE')
# LABELS PESTAÑAS
self.lab = ttk.Label(self.pest2, text='NOMBRE')
self.lab.grid(row=0, column=0)
self.lab1 = ttk.Label(self.pest2, text='APELLIDOS')
self.lab1.grid(row=0, column=1)
self.lab2 = ttk.Label(self.pest2, text='EDAD')
self.lab2.grid(row=0, column=2)
# ENTRYS PESTAÑAS
self.ent = ttk.Entry(self.pest2)
self.ent.grid(row=1, column=0, padx=10)
self.ent1 = ttk.Entry(self.pest2)
self.ent1.grid(row=1, column=1, padx=10)
# COMBOBOS PESTAÑAS
self.com = ttk.Combobox(self.pest2, width=3)
self.com.grid(row=1, column=2, padx=10)
def valcliente():
self.ent.configure(state='disabled')
self.ent1.configure(state='disabled')
def modcliente():
self.ent.configure(state='!disabled')
self.ent1.configure(state='!disabled')
# FRAMES
self.frame1 = ttk.Frame(self.principal)
self.frame1.grid(row=0, column=0)
self.frame2 = ttk.Frame(self.principal)
self.frame2.grid(row=1, column=0)
# NOTEBOOKS
self.note = ttk.Notebook(self.frame1, height=200)
self.note.grid()
self.pest1 = ttk.Frame(self.note)
self.note.add(self.pest1, text='CLIENTE')
# LABELS
self.lab = ttk.Label(self.pest1, text='NOMBRE')
self.lab.grid(row=0, column=0)
self.lab1 = ttk.Label(self.pest1, text='APELLIDOS')
self.lab1.grid(row=0, column=1)
self.lab2 = ttk.Label(self.pest1, text='EDAD')
self.lab2.grid(row=0, column=2)
# ENTRYS
self.ent = ttk.Entry(self.pest1)
self.ent.grid(row=1, column=0, padx=10)
self.ent1 = ttk.Entry(self.pest1)
self.ent1.grid(row=1, column=1, padx=10)
# COMBOBOX
self.com = ttk.Combobox(self.pest1, width=3)
self.com.grid(row=1, column=2, padx=10)
# BUTTONS
self.but = ttk.Button(self.frame2, text='Añadir', command=addcliente)
self.but.grid(row=1, column=0, padx=5)
self.but1 = ttk.Button(self.frame2, text='Validar', command=valcliente)
self.but1.grid(row=1, column=1, padx=5)
self.but2 = ttk.Button(self.frame2, text='Modificar', command= modcliente)
self.but2.grid(row=1, column=2, padx=5)
self.principal.mainloop()
def main():
my_app = Prueba()
if __name__ == '__main__':
main()
Bueno, la identación no funciona con un copia y pega desde Geany pero el código funciona.
Bien, en principio todo funciona correctamente. Se abre el notebook, y puedes poner el nombre y apellidos y una vez das al botón validar deshabilita los ENTRYS para que no se borren por error. Si le das a modificar también funciona correctamente y vuelve a habilidar los ENTRYS para que realices modificaciones en el mismo.
El problema viene si añades más de una pestaña. Es decir abres la aplicación y en vez de poner nombre y apellidos en la primera pestaña añades otra directamente.(Botón añadir). Bien hasta aquí todo parece funcionar, pero si yo pulso el botón validar, la única pestaña que se valida es la última es decir la que has añadido y yo lo que quiero es que me haga la validación en la pestaña que tenga seleccionada). No importa qué pestaña tengas seleccionada, siempre realiza las "modificaciones" en la última que hayas añadido.
Muchas gracias de antemano.