2012-05-20 3 views
0

В общем, я хочу подключиться к базе данных, выбранной пользователями.Python - как получить значение поля редактирования в другом модуле?

я с помощью модуля 2, dblogin.py и xconn.py

dblogin.py это графический интерфейс для пользователя установки нужного dataname и xconn.py это подключение к PostgreSQL

проблема я не могу получить значение dbedit в dblogin.py как я могу это исправить?

спасибо b4 за ответ .... GBU все ......

С уважением, язь

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

Является ли проблема в строке '_data = dblogin.dblog.getdb()? Как насчет '_data = dblogin.dblog.dbedit.text()'? – TryPyPy

ответ

1

Ваш класс QDialog должен начинаться с буквы capiatlized letters DBLog. Вы можете использовать StandardButtons:

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

Чтобы установить текст из QLineEdit в качестве возвращаемого значения, переописать акцепт метод:

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

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

Затем в xconn создать экземпляр од DBLog и использовать только диалог с получите это значение. Затем из xconn.py сделайте что-нибудь вроде этого:

dblog = DBLog() # create an instance for your dialog 
    if dblog: 
     _data = dblog._data 
    else: 
     Dialog not accepted 
Смежные вопросы