天天看点

PyQt5 标准输入对话框

对话框窗口或对话框是大多数现代GUI应用程序中不可或缺的一部分。在计算机应用程序中,一个对话框是一个用于“与应用程序”通话的窗口。对话框用于输入数据,修改数据,更改应用程序设置等。因为对话框涉及的内容比较多,我们计划分成几个章节来讲解,今天主要介绍输入对话框。

QInputDialog提供了一个简单的便利对话框,可以从用户获取单个值。 输入值可以是列表中的字符串,数字或项目。我们会分别通过一个例子来看看一下。

getDouble(QWidget, str, str, value: float = , min: float = -, max: float = ,decimals:int=,flags:Union[Qt.WindowFlags,Qt.WindowType]=Qt.WindowFlags())->Tuple[float,bool]
           
getInt(QWidget, str, str, value: int = , min: int = -, max: int = , step: int = , flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()) -> Tuple[int, bool]
           
getItem(QWidget, str, str, Iterable[str], current:int=,editable:bool=True,flags:Union[Qt.WindowFlags,Qt.WindowType]=Qt.WindowFlags(),inputMethodHints:Union[Qt.InputMethodHints,Qt.InputMethodHint] = Qt.ImhNone) -> Tuple[str, bool]
           
getMultiLineText(QWidget, str, str, text: str = '', flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags(), inputMethodHints: Union[Qt.InputMethodHints, Qt.InputMethodHint] = Qt.ImhNone)-> Tuple[str, bool]
           
getText(QWidget, str, str, echo: QLineEdit.EchoMode = QLineEdit.Normal,text: str = '', flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags(),inputMethodHints: Union[Qt.InputMethodHints, Qt.InputMethodHint] = Qt.ImhNone) -> Tuple[str, bool]
           

大栗子

"""
该示例具有按钮和标签和文本浏览器。 通过按钮显示输入对话框以便获取值。 输入的文本将显示在窗口的标签和文本浏览器中。
"""
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QLabel, QInputDialog, QTextBrowser)
import sys
class Example(QWidget):

    def nit__(self):
        super().nit__()
        self.initUI()

    def initUI(self):
        self.setGeometry(,,,)
        self.setWindowTitle('早点毕业吧--标准输入对话框')

        self.lb1 = QLabel('姓名:',self)
        self.lb1.move(,)

        self.lb2 = QLabel('年龄:',self)
        self.lb2.move(,)

        self.lb3 = QLabel('性别:',self)
        self.lb3.move(,)

        self.lb4 = QLabel('身高(cm):',self)
        self.lb4.move(,)

        self.lb5 = QLabel('基本信息:',self)
        self.lb5.move(,)

        self.lb6 = QLabel('学点编程',self)
        self.lb6.move(,)

        self.lb7 = QLabel('18',self)
        self.lb7.move(,)

        self.lb8 = QLabel('男',self)
        self.lb8.move(,)

        self.lb9 = QLabel('175',self)
        self.lb9.move(,)

        self.tb = QTextBrowser(self)
        self.tb.move(,)

        self.bt1 = QPushButton('修改姓名',self)
        self.bt1.move(,)

        self.bt2 = QPushButton('修改年龄',self)
        self.bt2.move(,)        

        self.bt3 = QPushButton('修改性别',self)
        self.bt3.move(,)        

        self.bt4 = QPushButton('修改身高',self)
        self.bt4.move(,)        

        self.bt5 = QPushButton('修改信息',self)
        self.bt5.move(,)

        self.show()
"""
单击按钮连接对应的槽函数
"""
        self.bt1.clicked.connect(self.showDialog)
        self.bt2.clicked.connect(self.showDialog)
        self.bt3.clicked.connect(self.showDialog)
        self.bt4.clicked.connect(self.showDialog)
        self.bt5.clicked.connect(self.showDialog)

    def showDialog(self):
        sender = self.sender()
        sex = ['男','女']
        """
若我们按下按钮1,此时显示输入对话框。 第一个字符串是一个对话标题,第二个是对话框中的一个消息。 对话框返回输入的文本和布尔值。 如果我们点击Ok按钮,布尔值为true。
        """
        if sender == self.bt1:
            text, ok = QInputDialog.getText(self, '修改姓名', '请输入姓名:')
            if ok:
                self.lb6.setText(text) #如果我们按下ok键,则标签的text值是从对话框接收的文本。
        elif sender == self.bt2:
            text, ok = QInputDialog.getInt(self, '修改年龄', '请输入年龄:', min = ) 可以输入整数,最小值、最大值可以自己设定。
            if ok:
                self.lb7.setText(str(text))
        elif sender == self.bt3:
            text, ok = QInputDialog.getItem(self, '修改性别', '请选择性别:',sex) #可以输入选择项,待选放到列表中,这里的列表就是sex。           
            if ok:
                self.lb8.setText(text)        
        elif sender == self.bt4:
            text, ok = QInputDialog.getDouble(self, '修改身高', '请输入身高:', min = )#可以输入浮点数,最小值、最大值可以自己设定,步长也可以自己设定。
            if ok:
                self.lb9.setText(str(text))
        elif sender == self.bt5:
            text, ok = QInputDialog.getMultiLineText(self, '修改信息', '请输入个人信息:')
            if ok:
                self.tb.setText(text)

if name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
           

具体运行结果参考:

https://zhuanlan.zhihu.com/p/29101077

谢谢 “学点编程吧”