PyQt5-数据输入输出

QLineEdit是常用的输入输出字符串的组件,也可以用于输入输出数值数据,只需进行字符串与数字之间的转换。
QSpinBox是专门用于输入输出整数的组件,还可以使用二进制、十六进制显示;
QDoubleSpinBox是专门用于输入输出浮点数的组件。

image

image

Demo3_1是采用单窗体应用程序模板widgetApp创建的。在UIDesigner里可视化设计窗体Widget.ui时,两个GroupBox内部的组件采用网格状布局,窗体总体采用垂直布局。窗体上各组件的命名、布局和属性设置详见示例源文件Widget.ui。

在窗体可视化设计时可以设置各个组件的属性。QSpinBox和QDoubleSpinBox都是QAbstractSpinBox的子类,具有大多数相同的属性,区别只是参数类型不同。QSpinBox和QDoubleSpinBox的主要属性如表3-1所示。

image

在UI Designer的属性编辑器里可设置属性,一个属性一般对应于类的两个接口函数,即一个读取函数和一个设置函数。例如,QDoubleSpinBox的decimals属性,读取属性值的函数为decimals(),返回一个int数值;设置属性值的函数为setDecimals(prec),参数prec是int类型。

设计成这样

image

image

image

image

image

image

双击Demo3_1项目目录下的uic.bat文件,就可以对Widget.ui文件进行编译,生成文件ui_Widget.py。文件ui_Widget.py中的类Ui_Widget是定义了窗体上所有组件和布局的类,这里不再显示其代码内容。

文件myWidget.py里的代码是窗体业务逻辑类QmyWidget的实现代码,其完整代码如下:

import sys
from PyQt5.QtWidgets import  QWidget,QApplication
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import QIcon

from ui_QtApp import Ui_Form
class QmyWidget(QWidget):
    def __init__(self,parent=None):
        super().__init__(parent) #调用父类构造函数
        self.ui=Ui_Form() #创建UI对象
        self.ui.setupUi(self) #构造UI

    ## ====由connectSlotsByName()自动与组件的信号关联的槽函数=====
    def on_pushButton_3_clicked(self): #计算总价的按钮
        num=int(self.ui.lineEdit.text())
        price=float(self.ui.lineEdit_2.text())
        total=num*price
        self.ui.lineEdit_3.setText("%.2f" %total)

    ## =======自定义槽函数=======
    @pyqtSlot(int) #数量 SpinBox
    def on_spinBox_valueChanged(self, count):
        price=self.ui.doubleSpinBox.value()
        self.ui.doubleSpinBox_2.setValue(count * price)

    @pyqtSlot(float) #单价 DoubleSpinBox
    def on_doubleSpinBox_valueChanged(self, price):
        count=self.ui.spinBox.value()
        self.ui.doubleSpinBox_2.setValue(count * price)

if __name__ == "__main__": ##用于当前窗体测试
    app=QApplication(sys.argv) #创建GUI应用程序
    form=QmyWidget() #创建窗体
    form.show()
    sys.exit(app.exec_())

image

对于具有overload型参数的信号,只为其中的一种参数形式的信号生成槽函数时,如果不是默认参数类型,应该使用@pyqtSlot修饰符声明参数类型。

image

image

image

posted @ 2022-05-28 10:07  司砚章  阅读(1154)  评论(0编辑  收藏  举报