本文是对《Python Qt GUI快速编程》的第9章的Tab标签页窗口的例子payment
form用Python3+PyQt5+Qt Designer进行改写。
第一部分无借用Qt Designer,完全用代码实现。
第二部分则借用Qt Designer,快速实现。
import sys
from PyQt5.QtCore import (QDate, Qt)
from PyQt5.QtWidgets import (QApplication, QCheckBox, QDateEdit,
QDialog,
QDialogButtonBox, QDoubleSpinBox, QGridLayout, QHBoxLayout,
QLabel, QLineEdit, QSpinBox, QTabWidget, QVBoxLayout,
QWidget)
class PaymentDlg(QDialog):
def
__init__(self, parent=None):
super(PaymentDlg, self).__init__(parent)
forenameLabel = QLabel("&Forename:")
self.forenameLineEdit = QLineEdit()
forenameLabel.setBuddy(self.forenameLineEdit)
surnameLabel = QLabel("&Surname:")
self.surnameLineEdit = QLineEdit()
surnameLabel.setBuddy(self.surnameLineEdit)
invoiceLabel = QLabel("&Invoice No.:")
self.invoiceSpinBox = QSpinBox()
invoiceLabel.setBuddy(self.invoiceSpinBox)
self.invoiceSpinBox.setRange(1, 10000000)
self.invoiceSpinBox.setValue(100000)
self.invoiceSpinBox.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
amountLabel = QLabel("&Amount:")
self.amountSpinBox = QDoubleSpinBox()
amountLabel.setBuddy(self.amountSpinBox)
self.amountSpinBox.setRange(0, 5000.0)
self.amountSpinBox.setPrefix("$ ")
self.amountSpinBox.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
self.paidCheckBox = QCheckBox("&Paid")
checkNumLabel = QLabel("Check &No.:")
self.checkNumLineEdit = QLineEdit()
checkNumLabel.setBuddy(self.checkNumLineEdit)
bankLabel = QLabel("&Bank:")
self.bankLineEdit = QLineEdit()
bankLabel.setBuddy(self.bankLineEdit)
accountNumLabel = QLabel("Acco&unt No.:")
self.accountNumLineEdit = QLineEdit()
accountNumLabel.setBuddy(self.accountNumLineEdit)
sortCodeLabel = QLabel("Sort &Code:")
self.sortCodeLineEdit = QLineEdit()
sortCodeLabel.setBuddy(self.sortCodeLineEdit)