如何在 PyQt4 中从 QTextEdit 获取输入

Posted

技术标签:

【中文标题】如何在 PyQt4 中从 QTextEdit 获取输入【英文标题】:How to get input from QTextEdit in PyQt4 【发布时间】:2017-09-14 04:42:40 【问题描述】:

我该如何解决以下问题 我无法从 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()

【问题讨论】:

当您提出问题时,不要只说“我无法...”,而应包括确切的错误消息或观察到的程序行为 只需在 window() 函数中声明“global e1,e2”即可。 好的,下次我会处理的,谢谢... 【参考方案1】:

这里的问题是,在b1_action() 中,变量e1e2 未被识别为QTextEdit()。仅出于教育目的将print e1 行添加到这两个函数中。你会得到:

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

Window()b1_action() 打印。所以你看,b1_action()e1 不是QTextEdite1 / e2 in Window()e1 / e2 in b1_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

【讨论】:

以上是关于如何在 PyQt4 中从 QTextEdit 获取输入的主要内容,如果未能解决你的问题,请参考以下文章

python PyQt4中如何获得QTextEdit的内容获得QLineEdit的内容有QLineEdit.text(),那QTextEdit呢?

PyQt4:QTextEdit 从第 n 行开始

PyQt4(简单布局)

如何在pyqt中从对话框窗口检索数据到主窗口?

PyQt4:如何获取 QlistWidget 的可见项目列表?

如何知道 QTextEdit 中文本输入光标的绝对位置?