Прошу сразу не называть меня идиотом, ибо я просто новичок в питоне и в программирование в целом.
Возможно вопрос покажется глупым, но все же очень прошу помощи.
Вопрос:
Пытаюсь написать окно регистрации в БД Firebird. Путем гугл и изучения книги PyQt имею такой код, в котором разобрался как смог:
#-*-coding: utf-8 -*- from PyQt4 import QtCore, QtGui, QtSql import sys import kinterbasdb class LoginWindow(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.lineEditName = QtGui.QLineEdit() self.lineEditDbase = QtGui.QLineEdit() self.lineEditPass = QtGui.QLineEdit() self.lineEditIp = QtGui.QLineEdit() self.lineEditPass.setEchoMode(2) self.buttonOk = QtGui.QPushButton("Ok") self.hbox = QtGui.QHBoxLayout() self.hbox.addWidget(self.buttonOk) self.form =QtGui.QFormLayout() self.form.addRow("Login:", self.lineEditName) self.form.addRow("Pass:", self.lineEditPass) self.form.addRow("BD:", self.lineEditDbase) self.form.addRow("Ip:", self.lineEditIp) self.form.addRow(self.hbox) self.setLayout(self.form) self.lineEditPass.setFocus() self.buttonOk.clicked.connect(self.on_Ok) def on_Ok(self): host = "192.168.1.88:E:\BD\BD1.FDB" BDUSER = "XXXX" BDPASSWORD = "XXX" #raw_input ("password ") con = kinterbasdb.connect(dsn=host,user=BDUSER,password=BDPASSWORD) cur = con.cursor() cur.execute('SELECT* FROM TABLE1') for row in cur: print 'ID', row[0] print 'NAME', row[1] #Окно для подтверждения закрытия def closeEvent(self, event): reply = QtGui.QMessageBox.question(self, 'Message', "Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: event.accept() else: event.ignore() app = QtGui.QApplication(sys.argv) win = LoginWindow() win.show() sys.exit(app.exec_())
Вопрос 1: как организовать проверку логина и пароля БД? Я так понял нужно присвоить значения поля соответствующей переменой. Но как это сделать не могу нагуглить.
Вопрос 2: При неправильном вводе логин\пароль или путь до бд, будут выдаваться ошибки, как эти ошибки разделить и обозначить пользователю?
Вопрос 3: По какой то причине, если я вставляю кнопку “Cancel” и задаю на него подтверждения закрытия, кнопка “Ok” перестает работать. Что это может быть.
Если можно приведите пример кода, или хотя бы дайте ссылку где посмотреть. Заранее спасибо.