实战PyQt5: 060-输入对话框QInputDialog

QInputDialog是PyQt5中用于快速创建简单输入对话框的组件,提供整数、浮点数、字符串和列表选项输入。本文通过一个实例展示了如何在Python GUI应用中使用QInputDialog进行文本、整数、浮点数和列表选择输入,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QInputDialog简介

在GUI应用中,经常有一些简单的输入信息需要交互,这时候可以使用QInputDialog来快速完成我们的工作,而不必创建一个新的对话框来实现。

QInputDialog控件是一个标准对话框,由一个文本框和两个按钮(ok和cancel)组成。当用户单击ok或enter键后,在父窗口可以收集通过QInputDialog控件输入的信息。在QInpuTDialog控件中可以输入数字,字符串或列表中的选项。

QInputDialog常用方法有:

  • getInt(): 从控件中获得标准整数输入;
  • getDouble(): 从控件中获得标准浮点数输入;
  • getText(): 从控件中获得标准字符串的输入;
  • getItem(): 从控件中获得列表里的选项输入;
  • getMultiLineText(): 从控件中获得多行文本输入。

QInputDialog常用信号:

  • textValueChanged: 当输入文本发生改变时,发射该信号;
  • textValueSelected: 当输入文本被选中时,发射该信号;
  • intValueChanged: 当输入的整数值发生改变时,发射该信号;
  • intValueSelected: 当选中整数值时,发射该信号;
  • doubleValueChanged: 当输入的浮点数发生改变时,发生该信号;
  • doubleValueSelected: 当选中浮点数值时,发射该信号。

QInputDialog类继承关系:

实战PyQt5: 060-输入对话框QInputDialog

 

测试QInputDialog

创建文件qinputdialog.py, 分别测试QInputDialog的四个方法:getItem, getText, getInt和getDouble。完整代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
#from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QInputDialog, QFormLayout,
                             QPushButton, QLineEdit)
 
class DemoInputDialog(QWidget):
    def __init__(self, parent=None):
        super(DemoInputDialog, self).__init__(parent)   
        
         # 设置窗口标题
        self.setWindowTitle('实战PyQt5: QInputDialog Demo!')      
        # 设置窗口大小
        self.resize(320, 240)
      
        self.initUi()
        
    def initUi(self):
        #创建一个表单布局
        mainLayout = QFormLayout(self)
        #设置内部控件之间的间隔
        mainLayout.setSpacing(16)
        
        min_width = 120
        
        btnGetSel = QPushButton('列表选择输入对话框', self)
        btnGetSel.setMinimumWidth(min_width)
        btnGetSel.clicked.connect(self.onGetSelItem)
        self.infoSel = QLineEdit(self)
        self.infoSel.setReadOnly(True)
        mainLayout.addRow(btnGetSel, self.infoSel)
        
        btnGetTxt = QPushButton('字符串输入对话框', self)
        btnGetTxt.setMinimumWidth(min_width)
        btnGetTxt.clicked.connect(self.onGetText)
        self.infoTxt = QLineEdit(self)
        self.infoTxt.setReadOnly(True)
        mainLayout.addRow(btnGetTxt, self.infoTxt)
        
        btnGetInt = QPushButton('整数输入对话框')
        btnGetInt.setMinimumWidth(min_width)
        btnGetInt.clicked.connect(self.onGetInt) 
        self.infoInt = QLineEdit(self)
        self.infoInt.setReadOnly(True)
        mainLayout.addRow(btnGetInt, self.infoInt)
        
        btnGetDbl = QPushButton('浮点数输入对话框')
        btnGetDbl.setMinimumWidth(min_width)
        btnGetDbl.clicked.connect(self.onGetDouble)
        self.infoDbl = QLineEdit(self)
        self.infoDbl.setReadOnly(True)
        mainLayout.addRow(btnGetDbl, self.infoDbl)
        
        self.setLayout(mainLayout)
        
    def onGetSelItem(self):
        #创建元组并并定义初始值
        items = ('C', 'C++', 'C#', 'Java', 'Java Script', 'Go', 'Python')
        #获取item输入的值,以及ok键的点击与否(True 或False)
        item,ok=QInputDialog.getItem(self,"选择输入对话框",'语言列表',items,0,False)
        if ok and item:
            #满足条件时,设置单行文本框的文本
            self.infoSel.setText(item)
            
    def onGetText(self):
        text,ok=QInputDialog.getText(self,'文本输入对话框','输入姓名:')
        if ok:
            self.infoTxt.setText(str(text))
            
    def onGetInt(self):
        num,ok=QInputDialog.getInt(self,'整数输入对话框','输入整数')
        if ok:
            self.infoInt.setText(str(num))
            
    def onGetDouble(self):
        value,ok=QInputDialog.getDouble(self,'浮点数输入对话框','输入浮点数')
        if ok:
            self.infoDbl.setText(str(value))
        
    
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoInputDialog()
    window.show()
    sys.exit(app.exec())

运行结果如下图:

实战PyQt5: 060-输入对话框QInputDialog

测试QInputDialog

本文知识点

  • 在一些简单的输入信息交互场景下使用QInputDialog可提高开发效率;
  • QInputDialog提供了几种常用的信息输入方式;
  • 表单QFormLayout的运用;
  • 设置按钮的最小宽度,以对齐按钮的排列。

前一篇:  实战PyQt5: 059-颜色对话框QColorDialog

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值