diff options
Diffstat (limited to 'examples/widgets/tutorials/addressbook/part2.py')
-rw-r--r-- | examples/widgets/tutorials/addressbook/part2.py | 203 |
1 files changed, 84 insertions, 119 deletions
diff --git a/examples/widgets/tutorials/addressbook/part2.py b/examples/widgets/tutorials/addressbook/part2.py index 772b4d463..3c0eb451d 100644 --- a/examples/widgets/tutorials/addressbook/part2.py +++ b/examples/widgets/tutorials/addressbook/part2.py @@ -1,46 +1,14 @@ +# Copyright (C) 2013 Riverbank Computing Limited. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -############################################################################# -## -## Copyright (C) 2013 Riverbank Computing Limited. -## Copyright (C) 2016 The Qt Company Ltd. -## Contact: http://www.qt.io/licensing/ -## -## This file is part of the Qt for Python examples of the Qt Toolkit. -## -## $QT_BEGIN_LICENSE:BSD$ -## You may use this file under the terms of the BSD license as follows: -## -## "Redistribution and use in source and binary forms, with or without -## modification, are permitted provided that the following conditions are -## met: -## * Redistributions of source code must retain the above copyright -## notice, this list of conditions and the following disclaimer. -## * Redistributions in binary form must reproduce the above copyright -## notice, this list of conditions and the following disclaimer in -## the documentation and/or other materials provided with the -## distribution. -## * Neither the name of The Qt Company Ltd nor the names of its -## contributors may be used to endorse or promote products derived -## from this software without specific prior written permission. -## -## -## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -## -## $QT_END_LICENSE$ -## -############################################################################# - -from PySide2 import QtCore, QtGui, QtWidgets +import sys + +from PySide6.QtCore import Qt +from PySide6.QtWidgets import (QApplication, QGridLayout, + QLabel, QLineEdit, + QMessageBox, QPushButton, QTextEdit, + QVBoxLayout, QWidget) class SortedDict(dict): @@ -72,109 +40,106 @@ class SortedDict(dict): iterkeys = __iter__ -class AddressBook(QtWidgets.QWidget): +class AddressBook(QWidget): def __init__(self, parent=None): - super(AddressBook, self).__init__(parent) + super().__init__(parent) self.contacts = SortedDict() - self.oldName = '' - self.oldAddress = '' - - nameLabel = QtWidgets.QLabel("Name:") - self.nameLine = QtWidgets.QLineEdit() - self.nameLine.setReadOnly(True) - - addressLabel = QtWidgets.QLabel("Address:") - self.addressText = QtWidgets.QTextEdit() - self.addressText.setReadOnly(True) - - self.addButton = QtWidgets.QPushButton("&Add") - self.submitButton = QtWidgets.QPushButton("&Submit") - self.submitButton.hide() - self.cancelButton = QtWidgets.QPushButton("&Cancel") - self.cancelButton.hide() - - self.addButton.clicked.connect(self.addContact) - self.submitButton.clicked.connect(self.submitContact) - self.cancelButton.clicked.connect(self.cancel) - - buttonLayout1 = QtWidgets.QVBoxLayout() - buttonLayout1.addWidget(self.addButton, QtCore.Qt.AlignTop) - buttonLayout1.addWidget(self.submitButton) - buttonLayout1.addWidget(self.cancelButton) - buttonLayout1.addStretch() - - mainLayout = QtWidgets.QGridLayout() - mainLayout.addWidget(nameLabel, 0, 0) - mainLayout.addWidget(self.nameLine, 0, 1) - mainLayout.addWidget(addressLabel, 1, 0, QtCore.Qt.AlignTop) - mainLayout.addWidget(self.addressText, 1, 1) - mainLayout.addLayout(buttonLayout1, 1, 2) - - self.setLayout(mainLayout) + self._old_name = '' + self._old_address = '' + + name_label = QLabel("Name:") + self._name_line = QLineEdit() + self._name_line.setReadOnly(True) + + address_label = QLabel("Address:") + self._address_text = QTextEdit() + self._address_text.setReadOnly(True) + + self._add_button = QPushButton("&Add") + self._submit_button = QPushButton("&Submit") + self._submit_button.hide() + self._cancel_button = QPushButton("&Cancel") + self._cancel_button.hide() + + self._add_button.clicked.connect(self.add_contact) + self._submit_button.clicked.connect(self.submit_contact) + self._cancel_button.clicked.connect(self.cancel) + + button_layout_1 = QVBoxLayout() + button_layout_1.addWidget(self._add_button, Qt.AlignTop) + button_layout_1.addWidget(self._submit_button) + button_layout_1.addWidget(self._cancel_button) + button_layout_1.addStretch() + + main_layout = QGridLayout() + main_layout.addWidget(name_label, 0, 0) + main_layout.addWidget(self._name_line, 0, 1) + main_layout.addWidget(address_label, 1, 0, Qt.AlignTop) + main_layout.addWidget(self._address_text, 1, 1) + main_layout.addLayout(button_layout_1, 1, 2) + + self.setLayout(main_layout) self.setWindowTitle("Simple Address Book") - def addContact(self): - self.oldName = self.nameLine.text() - self.oldAddress = self.addressText.toPlainText() + def add_contact(self): + self._old_name = self._name_line.text() + self._old_address = self._address_text.toPlainText() - self.nameLine.clear() - self.addressText.clear() + self._name_line.clear() + self._address_text.clear() - self.nameLine.setReadOnly(False) - self.nameLine.setFocus(QtCore.Qt.OtherFocusReason) - self.addressText.setReadOnly(False) + self._name_line.setReadOnly(False) + self._name_line.setFocus(Qt.OtherFocusReason) + self._address_text.setReadOnly(False) - self.addButton.setEnabled(False) - self.submitButton.show() - self.cancelButton.show() + self._add_button.setEnabled(False) + self._submit_button.show() + self._cancel_button.show() - def submitContact(self): - name = self.nameLine.text() - address = self.addressText.toPlainText() + def submit_contact(self): + name = self._name_line.text() + address = self._address_text.toPlainText() if name == "" or address == "": - QtWidgets.QMessageBox.information(self, "Empty Field", - "Please enter a name and address.") + QMessageBox.information(self, "Empty Field", "Please enter a name and address.") return if name not in self.contacts: self.contacts[name] = address - QtWidgets.QMessageBox.information(self, "Add Successful", - "\"%s\" has been added to your address book." % name) + QMessageBox.information(self, "Add Successful", + f'"{name}" has been added to your address book.') else: - QtWidgets.QMessageBox.information(self, "Add Unsuccessful", - "Sorry, \"%s\" is already in your address book." % name) + QMessageBox.information(self, "Add Unsuccessful", + f'Sorry, "{name}" is already in your address book.') return if not self.contacts: - self.nameLine.clear() - self.addressText.clear() + self._name_line.clear() + self._address_text.clear() - self.nameLine.setReadOnly(True) - self.addressText.setReadOnly(True) - self.addButton.setEnabled(True) - self.submitButton.hide() - self.cancelButton.hide() + self._name_line.setReadOnly(True) + self._address_text.setReadOnly(True) + self._add_button.setEnabled(True) + self._submit_button.hide() + self._cancel_button.hide() def cancel(self): - self.nameLine.setText(self.oldName) - self.nameLine.setReadOnly(True) + self._name_line.setText(self._old_name) + self._name_line.setReadOnly(True) - self.addressText.setText(self.oldAddress) - self.addressText.setReadOnly(True) + self._address_text.setText(self._old_address) + self._address_text.setReadOnly(True) - self.addButton.setEnabled(True) - self.submitButton.hide() - self.cancelButton.hide() + self._add_button.setEnabled(True) + self._submit_button.hide() + self._cancel_button.hide() if __name__ == '__main__': - import sys - - app = QtWidgets.QApplication(sys.argv) + app = QApplication(sys.argv) - addressBook = AddressBook() - addressBook.show() + address_book = AddressBook() + address_book.show() - sys.exit(app.exec_()) + sys.exit(app.exec()) |