improve nickname dialog (add text, placeholder), fix > 3 letters check, close dialog with window properly

This commit is contained in:
Xevion
2021-01-10 12:41:03 -06:00
parent b517d9d775
commit 92c53aa8a8
3 changed files with 58 additions and 35 deletions

View File

@@ -7,33 +7,14 @@
<x>0</x>
<y>0</y>
<width>449</width>
<height>85</height>
<height>98</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="0">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Maximum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<item row="6" column="0">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -56,6 +37,36 @@
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QLineEdit" name="lineEdit">
<property name="placeholderText">
<string>Type your nickname...</string>
</property>
</widget>
</item>
<item row="4" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Maximum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>10</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Please choose a nickname with 3 or more characters</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>

View File

@@ -63,13 +63,14 @@ class MainWindow(QMainWindow, Ui_MainWindow):
super(MainWindow, self).__init__(*args, **kwargs)
self.setupUi(self)
self.show()
self.closed = False
# Get Nickname
while True:
nicknameDialog = NicknameDialog(self)
nicknameDialog.exec_()
self.nickname = nicknameDialog.lineEdit.text().strip()
if len(self.nickname) > 3:
self.nicknameDialog = NicknameDialog(self)
self.nicknameDialog.exec_()
self.nickname = self.nicknameDialog.lineEdit.text().strip()
if len(self.nickname) >= 3 or self.closed:
break
# Connect to server
@@ -92,6 +93,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.messages = []
def closeEvent(self, event):
if self.nicknameDialog:
self.closed = True
self.nicknameDialog.close()
event.accept() # let the window close
def eventFilter(self, obj, event):
if event.type() == QEvent.KeyPress and obj is self.messageBox:
if event.key() == Qt.Key_Return and self.messageBox.hasFocus():

View File

@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '.\Nickname.ui'
# Form implementation generated from reading ui file 'Nickname.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
@@ -14,21 +14,24 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_NicknameDialog(object):
def setupUi(self, NicknameDialog):
NicknameDialog.setObjectName("NicknameDialog")
NicknameDialog.resize(449, 85)
NicknameDialog.resize(449, 98)
self.gridLayout = QtWidgets.QGridLayout(NicknameDialog)
self.gridLayout.setObjectName("gridLayout")
self.lineEdit = QtWidgets.QLineEdit(NicknameDialog)
self.lineEdit.setObjectName("lineEdit")
self.gridLayout.addWidget(self.lineEdit, 1, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
self.gridLayout.addItem(spacerItem, 2, 0, 1, 1)
self.buttonBox = QtWidgets.QDialogButtonBox(NicknameDialog)
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem1, 0, 0, 1, 1)
self.gridLayout.addWidget(self.buttonBox, 6, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem, 0, 0, 1, 1)
self.lineEdit = QtWidgets.QLineEdit(NicknameDialog)
self.lineEdit.setObjectName("lineEdit")
self.gridLayout.addWidget(self.lineEdit, 2, 0, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
self.gridLayout.addItem(spacerItem1, 4, 0, 1, 1)
self.label = QtWidgets.QLabel(NicknameDialog)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
self.retranslateUi(NicknameDialog)
self.buttonBox.accepted.connect(NicknameDialog.accept)
@@ -38,3 +41,5 @@ class Ui_NicknameDialog(object):
def retranslateUi(self, NicknameDialog):
_translate = QtCore.QCoreApplication.translate
NicknameDialog.setWindowTitle(_translate("NicknameDialog", "Dialog"))
self.lineEdit.setPlaceholderText(_translate("NicknameDialog", "Type your nickname..."))
self.label.setText(_translate("NicknameDialog", "Please choose a nickname with 3 or more characters"))