2017-09-25 4 views
0

Comment obtenir l'élément sélectionné de QComboBox et quand bouton est cliqué stocke l'élément de selecetd de combobox dans la base de données ...Comment lire les données QComboBox et storesit dans la base de données MySQL

import MySQLdb  
import sys  
from PyQt4.QtCore import *  
from PyQt4.QtGui import * 

def win(): 

    db=MySQLdb.connect('localhost','root','Suhel786','radio')  
    cursor=db.cursor()  

    app=QApplication(sys.argv)  

    w=QWidget()  
    co=QComboBox()  
    co.addItem("A+")  
    co.addItem("A-")  
    b1 = QPushButton("Tap it!")  
    w.setWindowTitle("Combo")  
    hbox=QHBoxLayout()  
    hbox.addWidget(co)  
    hbox.addWidget(b1) 

    b1.clicked.connect(b1_action) 

    w.setLayout(hbox) 

    w.show() 

    db.commit()  
    db.close() 

    sys.exit(app.exec_()) 

def b1_action():  
    print "data is inserted"   

win() 
+0

Quel est le tableau dans la base de données et quels sont les champs? – eyllanesc

+0

nom de tabel est test et champs Groupe sanguin de type varchar –

+0

Voulez-vous insérer avant quel événement? Chaque fois que vous sélectionnez un élément de la QComboBox? – eyllanesc

Répondre

0

Vous devez connecter le signal clicked du bouton avec une fente, dans ce cas, la fente sera la dans cette fonction, nous allons obtenir le texte sélectionné par la méthode currentText() de QComboBox, méthode de sauvegarde et l'insérer dans la base de données comme indiqué ci-dessous:

class Win(QWidget): 
    def __init__(self, parent=None): 
     QWidget.__init__(self, parent) 
     self.db = MySQLdb.connect('localhost','root','Suhel786','radio') 
     self.cursor = self.db.cursor() 

     self.db.commit() 
     self.setLayout(QHBoxLayout()) 
     self.btn = QPushButton("Save", self) 
     self.combo = QComboBox(self) 
     self.combo.addItems(["A+", "A-", "AB-"]) 
     self.layout().addWidget(self.btn) 
     self.layout().addWidget(self.combo) 
     self.btn.clicked.connect(self.save) 

    def save(self): 
     text = self.combo.currentText() 
     self.cursor.execute("INSERT INTO test (Blood) values('{}')".format(text)) 
     self.db.commit() 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    w = Win() 
    w.show() 
    sys.exit(app.exec_())