Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 13, 2009 16:38:06

Xaver
От:
Зарегистрирован: 2009-09-27
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt диалоговые окна

Помогите пожалуйста, преподователь задал задание создать программу с диалогом (например пользователь сначала вводить имя пользователя под которым хочет зайти и далее появляется форма ввода пароля в модальном режиме). С помошью 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а с текстом об ошибке при вводе пустой строки.



Офлайн

#2 Дек. 13, 2009 17:25:53

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt диалоговые окна

Xaver
помогите пожалуйста с пониманием QT
Не используйте дизайнер :)

Используйте QInputDialog для имени пользователя и пароля



Офлайн

#3 Дек. 13, 2009 19:46:44

SnowWolf
От:
Зарегистрирован: 2009-12-11
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt диалоговые окна

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')
а дизайнер я бы использовал для сложных проектов



Офлайн

#4 Дек. 14, 2009 05:22:38

Xaver
От:
Зарегистрирован: 2009-09-27
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt диалоговые окна

ну а есле мне нужно дальше сделать редактирование таблицы (2 формы: одна отражает список со всеми записями, а вторая позволяет редактировать запись ) хватит ли мне для этого стандартных классов?



Офлайн

#5 Дек. 14, 2009 20:37:07

SnowWolf
От:
Зарегистрирован: 2009-12-11
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt диалоговые окна

Не совсем понял вопрос. Меня, пока таблицы были не большие вполне устраивал QTableWidget. Там очень легко разобраться.



Офлайн

#6 Янв. 27, 2010 23:28:37

BurningMan
От:
Зарегистрирован: 2010-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt диалоговые окна

При попытке выполнения вот этого фрагмента кода

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)
имею ошибку TypeError: argument 1 of QInputDialog.getText() has an invalid type.
Объясните пожалуйста, что не так?



Отредактировано (Янв. 27, 2010 23:29:47)

Офлайн

#7 Янв. 28, 2010 00:17:26

truporez
От:
Зарегистрирован: 2009-05-08
Сообщения: 266
Репутация: +  6  -
Профиль   Адрес электронной почты  

PyQt диалоговые окна

Видимо self не является наследником QWidget



Офлайн

#8 Янв. 28, 2010 10:29:46

BurningMan
От:
Зарегистрирован: 2010-01-27
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt диалоговые окна

Ну судя по всему это из-за того, что я пишу Plasmoid. и self наследник plasmascript.Applet

upd
Я нашёл в Plasma такую фичу как Dialog. Надо теперь её научится юзать, пример не помешает. Собственно всё это нужно мне для окна конфигурации плазмоида



Отредактировано (Янв. 28, 2010 10:53:27)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version