0

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

我使用 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
4

1 回答 1

1

您的 QDialog 类应该以大写字母类 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
于 2012-05-20T09:53:06.953 回答