Форум сайта python.su
Помогите пожалуйста, преподователь задал задание создать программу с диалогом (например пользователь сначала вводить имя пользователя под которым хочет зайти и далее появляется форма ввода пароля в модальном режиме). С помошью puic4 я создал 2 класса, помогите реализовать задание:
class Ui_NameEnter(object):
def setupUi(self, NameEnter):
NameEnter.setObjectName(“NameEnter”)
NameEnter.resize(317, 145)
NameEnter.setMinimumSize(QtCore.QSize(317, 145))
NameEnter.setMaximumSize(QtCore.QSize(317, 145))
self.label = QtGui.QLabel(NameEnter)
self.label.setGeometry(QtCore.QRect(30, 40, 161, 16))
self.label.setObjectName(“label”)
self.leName = QtGui.QLineEdit(NameEnter)
self.leName.setGeometry(QtCore.QRect(30, 60, 251, 20))
self.leName.setObjectName(“leName”)
self.pbOK = QtGui.QPushButton(NameEnter)
self.pbOK.setGeometry(QtCore.QRect(30, 100, 81, 24))
self.pbOK.setObjectName(“pbOK”)
self.pbExit = QtGui.QPushButton(NameEnter)
self.pbExit.setGeometry(QtCore.QRect(200, 100, 81, 24))
self.pbExit.setObjectName(“pbExit”)
#QtCore.QObject.connect( self.pbOK, QtCore.SIGNAL(“clicked()”), self.Enter)
self.retranslateUi(NameEnter)
QtCore.QMetaObject.connectSlotsByName(NameEnter)
def retranslateUi(self, NameEnter):
NameEnter.setWindowTitle(QtGui.QApplication.translate(“NameEnter”, “Введите имя”, None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate(“NameEnter”, “Введите свое имя:”, None, QtGui.QApplication.UnicodeUTF8))
self.pbOK.setText(QtGui.QApplication.translate(“NameEnter”, “OK”, None, QtGui.QApplication.UnicodeUTF8))
self.pbExit.setText(QtGui.QApplication.translate(“NameEnter”, “Выход”, None, QtGui.QApplication.UnicodeUTF8))
class Ui_PasswordEnter(object):
def setupUi(self, PasswordEnter):
PasswordEnter.setObjectName(“PasswordEnter”)
PasswordEnter.resize(317, 145)
PasswordEnter.setMinimumSize(QtCore.QSize(317, 145))
PasswordEnter.setMaximumSize(QtCore.QSize(317, 145))
PasswordEnter.setSizeGripEnabled(False)
PasswordEnter.setModal(False)
self.label = QtGui.QLabel(PasswordEnter)
self.label.setGeometry(QtCore.QRect(30, 36, 241, 20))
self.label.setObjectName(“label”)
self.lePassword = QtGui.QLineEdit(PasswordEnter)
self.lePassword.setGeometry(QtCore.QRect(30, 60, 251, 20))
self.lePassword.setEchoMode(QtGui.QLineEdit.Password)
self.lePassword.setObjectName(“lePassword”)
self.pbOK = QtGui.QPushButton(PasswordEnter)
self.pbOK.setGeometry(QtCore.QRect(30, 100, 81, 24))
self.pbOK.setObjectName(“pbOK”)
self.pbExit = QtGui.QPushButton(PasswordEnter)
self.pbExit.setGeometry(QtCore.QRect(200, 100, 81, 24))
self.pbExit.setObjectName(“pbExit”)
self.retranslateUi(PasswordEnter)
QtCore.QMetaObject.connectSlotsByName(PasswordEnter)
def retranslateUi(self, PasswordEnter):
PasswordEnter.setWindowTitle(QtGui.QApplication.translate(“PasswordEnter”, “Введите пароль”, None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate(“PasswordEnter”, “Введите пароль пользователя admin:”, None, QtGui.QApplication.UnicodeUTF8))
self.pbOK.setText(QtGui.QApplication.translate(“PasswordEnter”, “OK”, None, QtGui.QApplication.UnicodeUTF8))
self.pbExit.setText(QtGui.QApplication.translate(“PasswordEnter”, “Выход”, None, QtGui.QApplication.UnicodeUTF8))
Так же помогите пожалуйста с пониманием QT допустим я хочу реализовать проверку что бы пользователь не вводил пустое имя, в теле класса Ui_NameEnter проблема начинается при создании QMessageBoxа с текстом об ошибке при вводе пустой строки.
Офлайн
XaverНе используйте дизайнер :)
помогите пожалуйста с пониманием QT
Офлайн
XaverВсе очень просто:
Так же помогите пожалуйста с пониманием QT допустим я хочу реализовать проверку что бы пользователь не вводил пустое имя, в теле класса Ui_NameEnter проблема начинается при создании QMessageBoxа с текстом об ошибке при вводе пустой строки.
# получаешь текст
text = QtGui.QInputDialog.getText(self, 'bla bla', 'input text')[0]
# проверяешь
if not text:
# выводишь сообщение об ошибке
QtGui.QMessageBox.critical(self, 'bla bla', 'bla')
Офлайн
ну а есле мне нужно дальше сделать редактирование таблицы (2 формы: одна отражает список со всеми записями, а вторая позволяет редактировать запись ) хватит ли мне для этого стандартных классов?
Офлайн
Не совсем понял вопрос. Меня, пока таблицы были не большие вполне устраивал QTableWidget. Там очень легко разобраться.
Офлайн
При попытке выполнения вот этого фрагмента кода
def showDialog(self):
text, ok= QInputDialog.getText(self, 'Settings','Enter username')
if ok:
self.uname=unicode(text)
text, ok = QInputDialog.getText(self, 'Settings', 'Enter password')
if ok:
self.upass=unicode(text)
Отредактировано (Янв. 27, 2010 23:29:47)
Офлайн
Видимо self не является наследником QWidget
Офлайн
Ну судя по всему это из-за того, что я пишу Plasmoid. и self наследник plasmascript.Applet
upd
Я нашёл в Plasma такую фичу как Dialog. Надо теперь её научится юзать, пример не помешает. Собственно всё это нужно мне для окна конфигурации плазмоида
Отредактировано (Янв. 28, 2010 10:53:27)
Офлайн