2017-09-14 46 views
0

我如何解決以下問題 我無法從獲得的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

好的,我會照顧這下一次謝謝... –

回答

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

非常感謝.................. –

相關問題