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

Используйте QInputDialog для имени пользователя и пароля
SnowWolf
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')
а дизайнер я бы использовал для сложных проектов
Xaver
ну а есле мне нужно дальше сделать редактирование таблицы (2 формы: одна отражает список со всеми записями, а вторая позволяет редактировать запись ) хватит ли мне для этого стандартных классов?
SnowWolf
Не совсем понял вопрос. Меня, пока таблицы были не большие вполне устраивал QTableWidget. Там очень легко разобраться.
BurningMan
При попытке выполнения вот этого фрагмента кода
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.
Объясните пожалуйста, что не так?
truporez
Видимо self не является наследником QWidget
BurningMan
Ну судя по всему это из-за того, что я пишу Plasmoid. и self наследник plasmascript.Applet

upd
Я нашёл в Plasma такую фичу как Dialog. Надо теперь её научится юзать, пример не помешает. Собственно всё это нужно мне для окна конфигурации плазмоида
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB