importsysfrom PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
classPenPropertiesDlg(QDialog):def __init__(self, parent=None):
super(PenPropertiesDlg, self).__init__(parent)
widthLabel= QLabel("&Width:")
self.widthSpinBox=QSpinBox()
widthLabel.setBuddy(self.widthSpinBox)
self.widthSpinBox.setAlignment(Qt.AlignRight|Qt.AlignVCenter)
self.widthSpinBox.setRange(0,24)
self.beveledCheckBox= QCheckBox("&Beveled edges")
styleLabel= QLabel("&Style:")
self.styleComboBox=QComboBox()
styleLabel.setBuddy(self.styleComboBox)
self.styleComboBox.addItems(["Solid", "Dashed", "Dotted", "DashDotted", "DashDotDotted"])
okButton= QPushButton("&OK")
cancelButton= QPushButton("Cancel")
buttonLayout=QHBoxLayout()
buttonLayout.addStretch()
buttonLayout.addWidget(okButton)
buttonLayout.addWidget(cancelButton)
layout=QGridLayout()
layout.addWidget(widthLabel, 0, 0)
layout.addWidget(self.widthSpinBox, 0,1)
layout.addWidget(self.beveledCheckBox, 0,2)
layout.addWidget(styleLabel,1, 0)
layout.addWidget(self.styleComboBox,1, 1, 1, 2)
layout.addLayout(buttonLayout,2, 0, 1, 3)
self.setLayout(layout)
self.setWindowTitle("Pen Properties")
okButton.clicked.connect(self.accept)
cancelButton.clicked.connect(self.reject)classForm(QDialog):def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.width= 1self.beveled=False
self.style= "Solid"penButton= QPushButton("Set Pen")
self.label= QLabel("The Pen has not been set")
self.label.setTextFormat(Qt.RichText)
layout=QVBoxLayout()
layout.addWidget(penButton)
layout.addWidget(self.label)
self.setLayout(layout)
self.setWindowTitle("Pen")
penButton.clicked.connect(self.setPenProperties)
self.updateData()defupdateData(self):
bevel= ""
ifself.beveled:
bevel= "
Beveled"self.label.setText("Width = {}
Style = {}{}".format(self.width, self.style, bevel))defsetPenProperties(self):
dialog=PenPropertiesDlg(self)
dialog.widthSpinBox.setValue(self.width)
dialog.beveledCheckBox.setChecked(self.beveled)
dialog.styleComboBox.setCurrentIndex(
dialog.styleComboBox.findText(self.style))ifdialog.exec_():
self.width=dialog.widthSpinBox.value()
self.beveled=dialog.beveledCheckBox.isChecked()
self.style=dialog.styleComboBox.currentText()
self.updateData()
app=QApplication(sys.argv)
form=Form()
form.resize(400, 200)
form.show()
app.exec_()