2017-09-14 3 views
0

Comment puis-je résoudre le problème suivant je suis incapable d'obtenir le texte de QTextEdit et l'insérer dans la base de données ...Comment obtenir la contribution de QTextEdit à PyQt4

code:

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

e1=None 
e2=None 

def window(): 
    app=QApplication(sys.argv) 
    win=QWidget() 
    win.setWindowTitle("Sample") 
    vbox=QVBoxLayout() 
    e1 = QTextEdit() 
    e2 = QTextEdit() 
    vbox.addWidget(e1) 
    vbox.addWidget(e2) 
    vbox.addStretch() 
    b1=QPushButton("Tap it!") 
    vbox.addWidget(b1) 
    b1.clicked.connect(b1_action) 
    win.setGeometry(100,100,200,50) 
    win.setLayout(vbox) 
    win.show() 
    sys.exit(app.exec_()) 

def b1_action(): 
    print "Button Clicked" 
    db = MySQLdb.connect('localhost', 'root', 'mysql', 'Tecoc354') 
    cursor=db.cursor() 
    x1=e1.toPlainText() 
    x2=e2.toPlainText() 
    print x1," ",x2," " 
    #sql="create table Sample(addr varchar(10),name varchar(10))" 
    # cursor.execute(sql) 
    sql2="insert into Tecoc354.sample values(%s,%s)"%(x1,x2) 
    cursor.execute(sql2) 
    db.commit() 
    db.close() 

window() 
+0

Lorsque vous posez une question, ne dites pas simplement "Je suis incapable ...." mais incluez le message d'erreur exact ou le comportement observé de votre programme. – jps

+0

Déclarez simplement "global e1, e2" dans la fenêtre() fonction. – PAR

+0

ok je vais prendre soin de cette prochaine fois merci ... –

Répondre

0

Le problème ici est, que dans b1_action() les variables e1 et e2 ne sont pas reconnus comme QTextEdit(). Juste à des fins éducatives, ajoutez la ligne print e1 aux deux fonctions. Vous obtiendrez:

<PyQt4.QtGui.QTextEdit object at 0x01DA7490> 
none 

imprimé de Window() et b1_action(). Donc, vous voyez, dans b1_action()e1 n'est pas un QTextEdit. e1/e2 dans Window() ne sont pas les mêmes variables que e1/e2 dans b1_action()

Le chemin le plus court pour résoudre c'est de faire e1 et e2 variables globales. Alors d'abord supprimer les lignes

e1=None 
e2=None 

et ensuite définir les deux variables comme à l'intérieur global de Window:

from PyQt4.QtGui import * 

def window(): 
    global e1 
    global e2 
    app=QApplication(sys.argv) 
    win=QWidget() 
    win.setWindowTitle("Sample") 
    vbox=QVBoxLayout() 
    e1 = QTextEdit() 
    e2 = QTextEdit() 

Vous pouvez trouver des informations utiles dans cette question et réponses sur global variables

En général, je voudrais ne recommande pas de créer une interface graphique basée sur les fonctions et les variables globales. Trouvez un tutoriel et apprenez à utiliser les classes. Par exemple this one

+0

Merci beaucoup .................. –