Есть варианты лучше?)
from PyQt4 import QtCore, QtGui, QtSql import sys import xml.etree.ElementTree as ET 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("Вход") self.buttonCancel = QtGui.QPushButton("Отмена") self.buttonOk.clicked.connect(self.on_Ok) self.buttonCancel.clicked.connect(self.close) self.hbox = QtGui.QHBoxLayout() self.hbox.addWidget(self.buttonOk) self.hbox.addWidget(self.buttonCancel) self.form =QtGui.QFormLayout() self.form.addRow("Логин:", self.lineEditName) self.form.addRow("Пароль:", self.lineEditPass) self.form.addRow("БД:", self.lineEditDbase) self.form.addRow("Ip:", self.lineEditIp) self.form.addRow(self.hbox) self.setLayout(self.form) self.lineEditPass.setFocus() def on_Ok(self): #Вот тут проверяется коннект, и если db.open создается основное окно. self.hide() self.window = MyWindow() self.window.resize(1100, 700) self.window.show() class MyWindow(QtGui.QWidget): def __init__(self, parent=None, dbconnect=None): QtGui.QWidget.__init__(self, parent) self.filename = "" self.vbox = QtGui.QVBoxLayout() self.groupBox = QtGui.QGroupBox(self) self.h1box = QtGui.QHBoxLayout() self.butOpen = QtGui.QPushButton("Открыть") self.butOpen.clicked.connect(self.on_butOpen) self.butAdd = QtGui.QPushButton("Добавить") self.butAdd.clicked.connect(self.on_butAdd) self.h1box.addWidget(self.butOpen, alignment = QtCore.Qt.AlignLeft) self.h1box.addWidget(self.butAdd, alignment = QtCore.Qt.AlignLeft) self.h1box.addStretch() self.groupBox.setLayout(self.h1box) self.vbox.addWidget(self.groupBox, alignment = QtCore.Qt.AlignTop) self.groupBox2 = QtGui.QGroupBox(self) self.h2box = QtGui.QHBoxLayout() self.textError = QtGui.QTextEdit() self.h2box.addWidget(self.textError) self.groupBox2.setLayout(self.h2box) self.vbox.addWidget(self.groupBox2, stretch=1) self.setLayout(self.vbox) def on_butOpen(self): self.butAdd.setEnabled(False) dialog = QtGui.QFileDialog(parent=self, filter="Xml файлы(*.xml)", caption="Где этот файл?") dialog.setAcceptMode(QtGui.QFileDialog.AcceptOpen) result = dialog.exec_() if result == QtGui.QDialog.Accepted: self.filename = str(dialog.selectedFiles()[0]) self.groupBox2.setTitle(self.filename) self.butAdd.setEnabled(True) def on_butAdd(self): self.textError.clear() totalNumber =[] totalRecords = 0 #self.tree = ET.parse(self.filename) # #self.root = self.tree.getroot() """ for value in self.root.findall("tp"): mobile = value.get("n") if mobile not in totalNumber: totalNumber.append(mobile) for ss in value.findall('ss'): totalRecords += 1 sd, ed, n, a = self.changeDate(ss.get("sd")), self.changeDate(ss.get("ed")), ss.get("n"), ss.get("a") self.textError.append("Добавлено %d записей, уникальный номеров %d"%(totalRecords, len(totalNumber))) self.textError.append("".join(x + '\n'for x in totalNumber)) self.root.clear() """ app = QtGui.QApplication(sys.argv) win = LoginWindow() win.show() sys.exit(app.exec_())