捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >Pyqt5 > 正文
1 2018.04

基本界面组件之inputDialog

点击次数:1520 更新时间:2018-4-1 22:07:24  【打印此页

QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,可以是一个字符串,一个Int类型数据,一个double类型数据或是一个下拉列表框的条目。 
对应的Dialog其中包括一个提示标签,一个输入控件(若是调用字符串输入框,则为一个QLineEdit,若是调用Int类型或double类型,则为一个QSpinBox,若是调用列表条目输入框,则为一个QComboBox),还包括一个确定输入(Ok)按钮和一个取消输入(Cancel)按钮。


QInputDialog

class QInputDialog(Qdialog)
 |  QInputDialog(Qwidget parent=None, Qt.WindowFlags flags=0)

QInputDialog同样继承自Qdialog,提供简单输入的对话框,

代码示例 :

示例代码如下:

#-*- coding:utf-8 -*-
'''
inputDialog
'''

from PyQt5.QtWidgets import Qapplication, Qwidget, QLineEdit, QInputDialog, QGridLayout, Qlabel, QPushButton, Qframe

class InputDialog(Qwidget):
    def __init__(self):       
        super(InputDialog,self).__init__()
        self.initUi()

    def initUi(self):
        self.setWindowTitle("项目信息")
        self.setGeometry(400,400,300,260)

        label1=Qlabel("项目名称:")
        label2=Qlabel("项目类型:")
        label3=Qlabel("项目人员:")
        label4=Qlabel("项目成本:")
        label5=Qlabel("项目介绍:")

        self.nameLable = Qlabel("PyQt5")
        self.nameLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.styleLable = Qlabel("外包")
        self.styleLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.numberLable = Qlabel("40")
        self.numberLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.costLable = Qlabel("400.98")
        self.costLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.introductionLable = Qlabel("服务外包第三方公司")
        self.introductionLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)

        nameButton=QPushButton("…")
        nameButton.clicked.connect(self.selectName)
        styleButton=QPushButton("…")
        styleButton.clicked.connect(self.selectStyle)
        numberButton=QPushButton("…")
        numberButton.clicked.connect(self.selectNumber)
        costButton=QPushButton("…")
        costButton.clicked.connect(self.selectCost)
        introductionButton=QPushButton("…")
        introductionButton.clicked.connect(self.selectIntroduction)

        mainLayout=QGridLayout()
        mainLayout.addWidget(label1,0,0)
        mainLayout.addWidget(self.nameLable,0,1)
        mainLayout.addWidget(nameButton,0,2)
        mainLayout.addWidget(label2,1,0)
        mainLayout.addWidget(self.styleLable,1,1)
        mainLayout.addWidget(styleButton,1,2)
        mainLayout.addWidget(label3,2,0)
        mainLayout.addWidget(self.numberLable,2,1)
        mainLayout.addWidget(numberButton,2,2)
        mainLayout.addWidget(label4,3,0)
        mainLayout.addWidget(self.costLable,3,1)
        mainLayout.addWidget(costButton,3,2)
        mainLayout.addWidget(label5,4,0)
        mainLayout.addWidget(self.introductionLable,4,1)
        mainLayout.addWidget(introductionButton,4,2)

        self.setLayout(mainLayout)



    def selectName(self):
        name,ok = QInputDialog.getText(self,"项目名称","输入项目名称:",
                                       QLineEdit.Normal,self.nameLable.text())
        if ok and (len(name)!=0):
            self.nameLable.setText(name)
    def selectStyle(self):
        list = ["外包","自研"]

        style,ok = QInputDialog.getItem(self,"项目性质","请选择项目性质:",list)
        if ok :
            self.styleLable.setText(style)

    def selectNumber(self):
        number,ok = QInputDialog.getInt(self,"项目成员","请输入项目成员人数:",int(self.numberLable.text()),20,100,2)
        if ok :
            self.numberLable.setText(str(number))

    def selectCost(self):
        cost,ok = QInputDialog.getDouble(self,"项目成本","请输入项目成员人数:",float(self.costLable.text()),100.00,500.00,2)
        if ok :
            self.costLable.setText(str(cost))

    def selectIntroduction(self):
        introduction,ok = QInputDialog.getMultiLineText(self,"项目介绍","介绍:","服务外包第三方公司 \nPython project")
        if ok :
            self.introductionLable.setText(introduction)



if __name__=="__main__":
    import sys
    app=Qapplication(sys.argv)
    myshow=InputDialog()
    myshow.show()
    sys.exit(app.exec_())

运行之后的效果: 
说明: 这里写图片描述

示例说明: 
通过点击不同的按钮,来选择不同类型的输入对话框,从而选择所需的数据。 
代码分析: 
L18~22:

        label1=Qlabel("项目名称:")
        label2=Qlabel("项目类型:")
        label3=Qlabel("项目人员:")
        label4=Qlabel("项目成本:")
        label5=Qlabel("项目介绍:")

定义了数据项名称的标签。

L24~33:

        self.nameLable = Qlabel("PyQt5")
        self.nameLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.styleLable = Qlabel("外包")
        self.styleLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.numberLable = Qlabel("40")
        self.numberLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.costLable = Qlabel("400.98")
        self.costLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)
        self.introductionLable = Qlabel("服务外包第三方公司")
        self.introductionLable.setFrameStyle(Qframe.Panel|Qframe.Sunken)

定义了项目数据项中的数据内容,数据内容显示在对应的标签中。 
setFrameStyle()设定标签的样式,有如下的样式: 
Qframe.Box 
Qframe.Panel 
Qframe.WinPanel 
Qframe.Hline 
Qframe.Vline 
Qframe.StyledPanel 
Qframe.Sunken 
Qframe.Raised

L35~L44:

        nameButton=QPushButton("…")
        nameButton.clicked.connect(self.selectName)
        styleButton=QPushButton("…")
        styleButton.clicked.connect(self.selectStyle)
        numberButton=QPushButton("…")
        numberButton.clicked.connect(self.selectNumber)
        costButton=QPushButton("…")
        costButton.clicked.connect(self.selectCost)
        introductionButton=QPushButton("…")
        introductionButton.clicked.connect(self.selectIntroduction)

实例化QPushButton对象,并将对应的clicked信号和自定义的槽函数绑定起来。

L46~61: 
实例化网格布局,并将对应的控件添加到网格布局中。

功能分析:

1:获取项目名称:

    def selectName(self):
        name,ok = QInputDialog.getText(self,"项目名称","输入项目名称:",QLineEdit.Normal,self.nameLable.text())
        if ok and (len(name)!=0):
            self.nameLable.setText(name)

QInputDialog中很多方法均为静态方法,因此不需要实例化直接可以调用。调用QInputDialog的getText()函数弹出标准字符串输入对话框,getText()函数原型如下:

 |  getText(…)
 |      QInputDialog.getText(Qwidget, str, str, QLineEdit.EchoMode echo=QLineEdit.Normal, str text=Qstring(), Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准输入对话框的标题名;

第3个参数str,标准输入对话框的标签提示;

第4个参数echo,mode指定标准输入对话框中QLineEdit控件的输入模式;

第5个参数str,标准输入对话框中QLineEdit控件的默认值;

第6个参数flags,指明标准输入对话框的窗体标识;

第7个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击nameButton之后的效果: 
说明: 这里写图片描述

若用户单击了“OK”按钮,则把新输入的名称更新至显示标签。

2:获取项目属性:

    def selectStyle(self):
        list = ["外包","自研"]
        style,ok = QInputDialog.getItem(self,"项目性质","请选择项目性质:",list)
        if ok :
            self.styleLable.setText(style)

调用QInputDialog的getItem()函数弹出标准条目选择对话框,getItem()函数原型如下:

 |  getItem(…)
 |      QInputDialog.getItem(Qwidget, str, str, list-of-str, int current=0, bool editable=True, Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准条目选择对话框的标题名;

第3个参数str,标准条目选择对话框的标签提示;

第4个参数list-of-str,标准条目选择对话框中对应条目的list;

第5个参数editable,标准条目选择对话框条目是否可编辑标识,默认为不可编辑;

第6个参数flags,指明标准输入对话框的窗体标识;

第7个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局.;

单击styleButton之后的效果: 
说明: 这里写图片描述 
若用户单击了“OK”按钮,则把新选择的类型更新至显示标签。

3:获取项目成员:

    def selectNumber(self):
        number,ok = QInputDialog.getInt(self,"项目成员","请输入项目成员人数:",int(self.numberLable.text()),20,100,2)
        if ok :
            self.numberLable.setText(str(number))

调用QInputDialog的getInt()函数弹出标准int类型输入对话框,getInt()函数原型如下:

|  getInt(…)
|      QInputDialog.getInt(Qwidget, str, str, int value=0, int min=-2147483647, int max=2147483647, int step=1, Qt.WindowFlags flags=0) -> (int, bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准int类型输入对话框的标题名;

第3个参数str,标准int类型输入对话框的标签提示;

第4个参数value,标准int类型输入对话框中的默认值;

第5个参数min,标准int类型输入对话框中的最小值;

第6个参数max,标准int类型输入对话框中的最大值;

第7个参数step,标准int类型输入对话框中的步长,即QSpinBox中上下选择是数据变化的步长;

第8个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击numberButton之后的效果: 
说明: 这里写图片描述 
若用户单击了“OK”按钮,则把新选择的成员数据更新至显示标签。

4:获取项目成本:

    def selectCost(self):
        cost,ok = QInputDialog.getDouble(self,"项目成本","请输入项目成员人数:",float(self.costLable.text()),100.00,500.00,2)
        if ok :
            self.costLable.setText(str(cost))

调用QInputDialog的getDouble()函数弹出标准float类型输入对话框,getDouble()函数原型如下:

 |  getDouble(…)
 |      QInputDialog.getDouble(Qwidget, str, str, float value=0, float min=-2147483647, float max=2147483647, int decimals=1, Qt.WindowFlags flags=0) -> (float, bool)

第1个参数parent,用于指定父组件;

第2个参数str,输入对话框的标题名;

第3个参数str,输入对话框的标签提示;

第4个参数value,标准float类型输入对话框中的默认值;

第5个参数min,标准float类型输入对话框中的最小值;

第6个参数max,标准float类型输入对话框中的最大值;

第7个参数decimals,小数点后面保留的位数;

第8个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击costButton之后的效果: 
说明: 这里写图片描述 
若用户单击了“OK”按钮,则把新选择的成本数据更新至显示标签

5:获取项目介绍:

    def selectIntroduction(self):
        introduction,ok = QInputDialog.getMultiLineText(self,"项目介绍","介绍:","服务外包第三方公司 \nPython project")
        if ok :
            self.introductionLable.setText(introduction)

调用QInputDialog的getMultiLineText()函数弹出标准多行文本类型输入对话框,getMultiLineText()函数原型如下:

 |  getMultiLineText(…)
 |      QInputDialog.getMultiLineText(Qwidget, str, str, str text='', Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)

第1个参数parent,用于指定父组件;

第2个参数str,输入对话框的标题名;

第3个参数str,输入对话框的标签提示;

第4个参数text,输入对话框中LineEdit的默认值;

第5个参数flags,指明标准输入对话框的窗体标识;

第6个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击introductionButton之后的效果: 
说明: 这里写图片描述 
若用户单击了“OK”按钮,则把新修改的项目介绍信息更新至显示标签

Tips
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1520 更新时间:2018-4-1 22:07:24  【打印此页
关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修