Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Modificación de widgets pestaña seleccionada
#1
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).

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.
Responder


Mensajes en este tema
Modificación de widgets pestaña seleccionada - por Myszowor - 25-09-2019, 08:02 PM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)