您的位置:首页 > 编程语言 > Python开发

Python Qt GUI快速编程-第五章的例子pen的python3+pytq5+Qt Designer实现

2016-12-30 15:54 1006 查看
本文是本人用python3+pytq5+Qt Designer实现Python Qt GUI快速编程-第五章的例子Pen,请大家参考。

pen设置的界面的按钮用buttonBox替代了,而非书中用两个按钮。

#/home/yrd/eric_workspace/pen/Ui_pen.py

# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(332, 162)
Dialog.setSizeGripEnabled(True)
self.widget = QtWidgets.QWidget(Dialog)
self.widget.setGeometry(QtCore.QRect(10, 10, 311, 141))
self.widget.setObjectName("widget")
self.gridLayout = QtWidgets.QGridLayout(self.widget)
self.gridLayout.setContentsMargins(3, 3, 3, 3)
self.gridLayout.setVerticalSpacing(5)
self.gridLayout.setObjectName("gridLayout")
self.widthLabel = QtWidgets.QLabel(self.widget)
self.widthLabel.setObjectName("widthLabel")
self.gridLayout.addWidget(self.widthLabel, 0, 0, 1, 1)
self.widthSpinBox = QtWidgets.QSpinBox(self.widget)
self.widthSpinBox.setObjectName("widthSpinBox")
self.gridLayout.addWidget(self.widthSpinBox, 0, 1, 1, 1)
self.beveledCheckBox = QtWidgets.QCheckBox(self.widget)
self.beveledCheckBox.setChecked(True)
self.beveledCheckBox.setObjectName("beveledCheckBox")
self.gridLayout.addWidget(self.beveledCheckBox, 0, 2, 1, 1)
self.styleLabel = QtWidgets.QLabel(self.widget)
self.styleLabel.setObjectName("styleLabel")
self.gridLayout.addWidget(self.styleLabel, 1, 0, 1, 1)
self.styleComboBox = QtWidgets.QComboBox(self.widget)
self.styleComboBox.setObjectName("styleComboBox")
self.styleComboBox.addItem("")
self.styleComboBox.addItem("")
self.styleComboBox.addItem("")
self.styleComboBox.addItem("")
self.styleComboBox.addItem("")
self.gridLayout.addWidget(self.styleComboBox, 1, 1, 1, 2)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setContentsMargins(3, 3, 3, 3)
self.horizontalLayout.setObjectName("horizontalLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.buttonBox = QtWidgets.QDialogButtonBox(self.widget)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setCenterButtons(False)
self.buttonBox.setObjectName("buttonBox")
self.horizontalLayout.addWidget(self.buttonBox)
self.horizontalLayout.setStretch(0, 1)
self.gridLayout.addLayout(self.horizontalLayout, 2, 0, 1, 3)
self.gridLayout.setColumnStretch(1, 1)
self.widthLabel.setBuddy(self.widthSpinBox)
self.styleLabel.setBuddy(self.styleComboBox)

self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Pen"))
self.widthLabel.setText(_translate("Dialog", "&Width:"))
self.beveledCheckBox.setText(_translate("Dialog", "&Beveled edges"))
self.styleLabel.setText(_translate("Dialog", "&Style:"))
self.styleComboBox.setItemText(0, _translate("Dialog", "Solid"))
self.styleComboBox.setItemText(1, _translate("Dialog", "Dashed"))
self.styleComboBox.setItemText(2, _translate("Dialog", "Dotted"))
self.styleComboBox.setItemText(3, _translate("Dialog", "DashDotted"))
self.styleComboBox.setItemText(4, _translate("Dialog", "DashDotDotted"))

if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())


#/home/yrd/eric_workspace/pen/pen.py

# -*- coding: utf-8 -*-

"""
Module implementing pen.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog

from Ui_pen import Ui_Dialog

class pen(QDialog, Ui_Dialog):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
"""
Constructor

@param parent reference to the parent widget
@type QWidget
"""
super(pen, self).__init__(parent)
self.setupUi(self)


#/home/yrd/eric_workspace/pen/Ui_Form.py

# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(307, 120)
Form.setSizeGripEnabled(True)
self.widget = QtWidgets.QWidget(Form)
self.widget.setGeometry(QtCore.QRect(10, 10, 281, 101))
self.widget.setObjectName("widget")
self.gridLayout = QtWidgets.QGridLayout(self.widget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.penButton = QtWidgets.QPushButton(self.widget)
self.penButton.setObjectName("penButton")
self.gridLayout.addWidget(self.penButton, 0, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)
spacerItem1 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout.addItem(spacerItem1, 1, 0, 1, 1)
self.label = QtWidgets.QLabel(self.widget)
self.label.setTextFormat(QtCore.Qt.RichText)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 2, 0, 1, 2)
self.gridLayout.setRowStretch(2, 1)

self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Pen"))
self.penButton.setText(_translate("Form", "Set Pen... (Dumb &class)"))
self.label.setText(_translate("Form", "The Pen has not been set"))

if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QDialog()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())


#/home/yrd/eric_workspace/pen/Form.py

# -*- coding: utf-8 -*-

"""
Module implementing Form.
"""

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QDialog,QApplication

from Ui_Form import Ui_Form
from pen import pen
import sys

class Form(QDialog, Ui_Form):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
"""
Constructor

@param parent reference to the parent widget
@type QWidget
"""
super(Form, self).__init__(parent)
self.setupUi(self)
self.width = 1
self.beveled = False
self.style = "Solid"
self.penButton.clicked.connect(self.setPenProperties)
self.updateData()

def updateData(self):
bevel = ""
if self.beveled:
bevel = "<br>Beveled"
self.label.setText("Width = {0}<br>Style = {1}{2}".format(
self.width, self.style, bevel))

def setPenProperties(self):
pendialog = pen(self)
pendialog.widthSpinBox.setValue(self.width)
pendialog.beveledCheckBox.setChecked(self.beveled)
pendialog.styleComboBox.setCurrentIndex(
pendialog.styleComboBox.findText(self.style))
if pendialog.exec_():
self.width = pendialog.widthSpinBox.value()
self.beveled = pendialog.beveledCheckBox.isChecked()
self.style = str(pendialog.styleComboBox.currentText())
self.updateData()

if __name__ == "__main__":
app = QApplication(sys.argv)
dlg=Form()
dlg.show()
sys.exit(app.exec_())


运行Form.py结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python qt gui