Autor Tema: Python + ComboBox + PyQt5 + Sqlite3  (Leído 876 veces)

Baldomero123

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Python + ComboBox + PyQt5 + Sqlite3
« en: 13 de Febrero 2024, 12:12 »
En los registros de una tabla tengo siete campos que sólo pueden tomar  entre cuatro y siete valores exclusivamente. Ideales por lo tanto para manejar estos campos con otros tantos ComboBoxes. Esto que es muy sencillo en VisualBasic no lo consigo en Python, porque activar el CB requiere un método, aparte del método de INSERT, DELETE etc. He intentado entrar la activación de CB como una función pero no me funciona. Exige un método independiente. es imposible.
Lo que tengo en general es
zetapa = self.LEEtapa.text()   
#(LE=LineEdit)
sql = “ ” ”INSERT  INTO remesas (etapa, inv, …) VALUES (zetapa, zinv, …) “ “ “
y lo que he pretendido es
self.contentInv = self.CBInv.currentText()
LEInv.text = self.contentInv
zinv = self.LEInv.text().
Pero esto no funciona ni las modificaciones que he ido haciendo. A LEInv no pasa ningún valor. Puede que tenga algún error en los paréntesis, pero he hecho mil y una pruebas.-
¿Qué podría hacer, además de prescindir de los ComboBoxes? Gracias.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re: Python + ComboBox + PyQt5 + Sqlite3
« Respuesta #1 en: 14 de Febrero 2024, 08:48 »
Buenas, no sé bien qué idea es la que tienes, si recuperar datos de la base de datos, o al revés, insertar datos en la base de datos. A lo mejor este código de ejemplo te orienta algo
 
Código: [Seleccionar]
import tkinter as tk
from tkinter import *
from tkinter import ttk
import mysql.connector
 
connection = mysql.connector.connect(host='localhost', user='root', port='3306', password='', database='test_py')
c = connection.cursor()
 
root = Tk()
frame = tk.Frame(root, padx=40,pady=40, bg='grey')
 
c.execute("SELECT nombre FROM `usuarios_2`")
opciones = c.fetchall()
seleccionado = StringVar(frame)
seleccionado.set(opciones[0])
 
combobox = ttk.Combobox(frame, textvariable=seleccionado, values=opciones, font=('verdana',14))
 
combobox.pack()
frame.pack()
 
root.mainloop()
 
El código ejecuta una consulta SQL para seleccionar la columna "nombre" de la tabla "usuarios_2" en la base de datos. Los resultados se almacenan en la variable "opciones".
 
Se crea un widget ttk.Combobox dentro del marco.
El parámetro textvariable se establece en una instancia de StringVar denominada "seleccionado", que contendrá la opción seleccionada del combobox.
El parámetro de valores se establece en las opciones recuperadas de la base de datos.
El parámetro de fuente especifica el estilo y tamaño de la fuente.
 
El widget del combobox está empaquetado dentro del marco, lo que hace que se muestre en la ventana de la aplicación.

Baldomero123

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re: Python + ComboBox + PyQt5 + Sqlite3
« Respuesta #2 en: 15 de Febrero 2024, 06:47 »
Gracias por tu respuesta y procuraré aplicarla a mi caso, aunque la BD es diferente, Sqlite3,. y el designer es  diferente, PyQt5 y no tkinter.  Gracias y que tengas un buen día.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".