如何从的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()
答
这里的问题是,在b1_action()
变量e1
和e2
不被识别为QTextEdit()
。仅用于教育目的,将print e1
行添加到这两个函数中。您将获得:从Window()
和b1_action()
印刷
<PyQt4.QtGui.QTextEdit object at 0x01DA7490>
none
。所以你看,在b1_action()
e1
不是QTextEdit
。在Window()
e1
/e2
是不相同的变量e1
/e2
在b1_action()
解决那就是让e1
和e2
全局变量的捷径。所以,先删除线
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
非常感谢.................. –
当您提出问题时,请不要只说“我无法......”,而是包含您的程序的确切错误消息或观察到的行为 – jps
只需在窗口中声明“全局e1,e2” ()函数。 – PAR
好的,我会照顾这下一次谢谢... –