一般来说,我希望连接到用户选择的数据库。
我使用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
答案 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