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

本文是本人用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结果如下:
这里写图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonQT GUI快速编程源码是一种用于创建用户界面的开源框架。该框架结合Python编程语言和QT库的功能,使开发人员能够快速而轻松地创建交互式和响应式的应用程序。 在使用Python QT GUI快速编程源码时,开发人员可以利用QT库提供的各种可视化组件和工具,如按钮、文本框、表格等,来设计和布局应用程序的用户界面。开发人员可以使用Python语言编写代码来定义这些组件的行为和特性,如何响应用户的操作,以及如何处理和操作数据。 使用Python QT GUI快速编程源码的好处之一是它的易用性和灵活性。开发人员可以通过简单地拖放和调整组件来设计用户界面,而无需编写复杂的布局和样式代码。此外,开发人员还可以根据应用程序的需要自定义和扩展这些组件,以实现更高级的功能和效果。 Python QT GUI快速编程源码还提供了丰富的事件处理和信号槽机制。开发人员可以定义各种事件和信号,并将它们与特定的处理函数关联起来。这使得开发人员能够轻松地实现用户界面的交互性和动态性,例如根据用户的操作更新界面内容、响应按钮点击事件等。 总的来说,Python QT GUI快速编程源码是一个强大而灵活的开发框架,可帮助开发人员快速创建功能强大且易用的用户界面。无论是开发小型工具还是大型应用程序,使用Python QT GUI快速编程源码都能带来高效和可维护的开发体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值