如何从的QTextEdit获取输入PyQt4中

问题描述:

我如何解决以下问题 我无法从获得的QTextEdit文字并将其插入到数据库...如何从的QTextEdit获取输入PyQt4中

代码:

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

当您提出问题时,请不要只说“我无法......”,而是包含您的程序的确切错误消息或观察到的行为 – jps

+0

只需在窗口中声明“全局e1,e2” ()函数。 – PAR

+0

好的,我会照顾这下一次谢谢... –

这里的问题是,在b1_action()变量e1e2不被识别为QTextEdit()。仅用于教育目的,将print e1行添加到这两个函数中。您将获得:从Window()b1_action()印刷

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

。所以你看,在b1_action()e1不是QTextEdit。在Window()e1/e2是不相同的变量e1/e2b1_action()

解决那就是让e1e2全局变量的捷径。所以,先删除线

e1=None 
e2=None 

,然后定义两个变量为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() 

你可以找到在这个问题上约global variables

一般来说,我会一些有用的信息和答案不建议基于函数和全局变量构建GUI。查找教程并了解如何使用类。例如this one

+0

非常感谢.................. –