如何从 PyQt4 中的 QTextEdit 获取输入
How to get input from QTextEdit in PyQt4
如何解决以下问题
我无法从 QTextEdit 获取文本并将其插入数据库...
代码:
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
添加到两个函数。你会得到:
<PyQt4.QtGui.QTextEdit object at 0x01DA7490>
none
打印自 Window()
和 b1_action()
。所以你看,在b1_action()
中,e1
不是QTextEdit
。 e1
/ e2
in Window()
与 e1
/ e2
in 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
如何解决以下问题 我无法从 QTextEdit 获取文本并将其插入数据库...
代码:
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
添加到两个函数。你会得到:
<PyQt4.QtGui.QTextEdit object at 0x01DA7490>
none
打印自 Window()
和 b1_action()
。所以你看,在b1_action()
中,e1
不是QTextEdit
。 e1
/ e2
in Window()
与 e1
/ e2
in 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