Python - 如何在其他模块中获取编辑框值?

时间:2012-05-20 02:28:39

标签: python postgresql psycopg2

一般来说,我希望连接到用户选择的数据库。

我使用2个模块dblogin.py和xconn.py

dblogin.py是用户设置所需数据名称的gui,xconn.py是与postgresql的连接

问题是我无法在dblogin.py中获取dbedit的值 我怎么能解决它?

感谢b4的答案.... Gbu all ......

此致 IDE

dblogin.py

class dblog(QDialog):
def __init__(self):
    super(dblog, self).__init__()
    self.dblabel = QLabel('Database Name')
    self.dbedit = QLineEdit('')

    #create button        
    ...

    #set layout in grid

    #action for button
    self.connect(self.connectbutton, SIGNAL('clicked()'),self.connectaction)

def connectaction(self):                
    self._data = self.dbedit.text()
    if self._data == '':
        _msg = QMessageBox.information(self,'information','Nama Database harus diisi !',QMessageBox.Ok)
        self.dbedit.setFocus()
    else:
        try:
            xconn.getconn()
            _msg = QMessageBox.information(self,'information','Tunggu, Check database struktur!',QMessageBox.Ok)
        except:
            _msg = QMessageBox.information(self,'information','Database tidak ditemukan !',QMessageBox.Ok)

xconn.py

import psycopg2
import dblogin

def getconn():    
    _host = '127.0.0.1'
    _user = 'postgres'
    _pass = 'xxx'
    _data = dblogin.dblog.getdb()          

    conn = psycopg2.connect(database=_data, user=_user, password=_pass, host=_host)
    return conn

1 个答案:

答案 0 :(得分:1)

您的QDialog类应以capiatlized字母类DBLog开头。您可以使用标准按钮:

    self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel)

要将QLineEdit中的文本设置为返回值,请重新实现accept方法:

    self.buttonBox.accepted.connect(self.accept)

    def accept(self):
    self._data = self.dbedit.text()
    self.done(1)

然后在xconn中创建一个实例od DBLog并仅使用Dialog来获取此值。然后从xconn.py做这样的事情:

    dblog = DBLog() # create an instance for your dialog
    if dblog:
         _data = dblog._data
    else:
         Dialog not accepted