Jump to content

criar um botao ao lado de uma lista de nomes que estao vindo do banco de dados no python


ARLEY

Postagens Recomendadas

estou querendo criar botoes ao lado da uma lista que vem de um banco de dados, os botoes apareceriam na mesma quantidade de itens e ao lado deles, por exemplo, 
se na lista tiver 10 itens automaticamente tambem terá 10 botoes (um ao lado de cada item) e que este botao copie o nome do item e cole em outro campo de texto.

porem se eu adicionar mais 5 itens no banco de dados automaticamente aparecera mais 5 botoes.

eu nn tenho o codigo pq nn conseguir pensar em como poderia fzr isto.


estou colocando uma foto como exemplo

exemplo.png

Editado por ARLEY
Link to comment
Compartilhe em outros sites

  • ARLEY mudou o título para criar um botao ao lado de uma lista de nomes que estao vindo do banco de dados no python

@ARLEY Veja se funciona para você.

import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel, QLineEdit, QHBoxLayout


class MainWindow(QWidget):
    def __init__(self, items):
        super().__init__()

        # Layout principal
        self.layout = QVBoxLayout()

        # Dicionário para armazenar os campos de texto
        self.text_fields = {}

        # Para cada item na lista de dados, crie um label, botão e campo de texto
        for item in items:
            row_layout = QHBoxLayout()

            # Cria um label com o nome do item
            label = QLabel(item)
            row_layout.addWidget(label)

            # Cria um botão com a funcionalidade de copiar o nome do item
            copy_button = QPushButton("Copiar")
            copy_button.clicked.connect(lambda checked, text=item: self.copy_text(text))
            row_layout.addWidget(copy_button)

            # Cria um campo de texto onde o nome será colado
            text_field = QLineEdit()
            self.text_fields[item] = text_field
            row_layout.addWidget(text_field)

            # Adiciona a linha ao layout principal
            self.layout.addLayout(row_layout)

        self.setLayout(self.layout)

    def copy_text(self, text):
        # Cola o texto no campo de texto correspondente
        self.text_fields[text].setText(text)


if __name__ == "__main__":
    app = QApplication(sys.argv)

    # Aqui você pegaria os itens do banco de dados, como exemplo usei uma lista
    items = ["Maçã", "Banana", "Grão de Bico", "Teste 1", "Teste 2", "Teste"]

    window = MainWindow(items)
    window.show()

    sys.exit(app.exec())

 

Link to comment
Compartilhe em outros sites

@ARLEY Codigo usando TKinter

import tkinter as tk

class MainWindow(tk.Tk):
    def __init__(self, items):
        super().__init__()

        # Armazenando os campos de entrada
        self.entry_fields = {}

        # Para cada item na lista, crie um label, um botão e um campo de entrada
        for index, item in enumerate(items):
            # Cria um label com o nome do item
            label = tk.Label(self, text=item)
            label.grid(row=index, column=0, padx=5, pady=5)

            # Cria um botão para copiar o nome do item
            copy_button = tk.Button(self, text="Copiar", command=lambda text=item: self.copy_text(text))
            copy_button.grid(row=index, column=1, padx=5, pady=5)

            # Cria um campo de entrada para exibir o nome copiado
            entry_field = tk.Entry(self)
            entry_field.grid(row=index, column=2, padx=5, pady=5)

            # Armazena o campo de entrada associado ao item
            self.entry_fields[item] = entry_field

    def copy_text(self, text):
        # Cola o texto no campo de entrada correspondente
        self.entry_fields[text].delete(0, tk.END)  # Limpa o campo antes de inserir
        self.entry_fields[text].insert(0, text)

if __name__ == "__main__":
    # Aqui você pegaria os itens do banco de dados, no exemplo é uma lista fixa
    items = ["Maçã", "Banana", "Grão de Bico", "Teste 1", "Teste 2", "Teste"]

    # Criação da janela principal
    window = MainWindow(items)
    window.title("Interface Dinâmica Tkinter")
    window.geometry("400x200")
    window.mainloop()

 

Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...