PyQt5----自定义Dialog 多数据源输入

PyQt5----自定义Dialog

原因

使用Pyqt作为UI时, 时常想一次性获取多个数据, 但是QInputDialog等一般只接受一个输入源, 多次调用该接口确实可以获取, 但是显得很麻烦
自定义widget也确实可以实现该功能, 但是如果只是简单两三个输入源, 需要用Widget来做, 那就显得有些杀鸡用牛刀了.因此自定义的Dialog才是王道
网络上查了很多也没有找到很完整的, 自己摸索了一下才弄出来自己想要的效果

废话不多说 直接上代码

代码块

    def GetUserPlotItems(self) -> tuple:
        """
        用来获取需要做曲线的两个Item, 也可以做多个
        :return:
        """
        dialog = QDialog(self)  # 自定义一个dialog
        dialog.setWindowTitle('Plot Configs')
        formLayout = QFormLayout(dialog)  # 配置layout
        comboBox1 = QComboBox()
        comboBox1.addItems(self.DM.Keys())  # 第一个做曲线的通道名称
        formLayout.addRow('First Item', comboBox1)
        comboBox1.setCurrentText(self.ChoosedColumnName.currentText())
        comboBox2 = QComboBox()
        comboBox2.addItems(self.DM.Keys())  # 第二个做曲线的通道名称
        formLayout.addRow('Second Item', comboBox2)
        comboBox2.setCurrentText(self.ChoosedColumnName.currentText())
        # formLayout.addRow(QLabel('Add Range(e.g.: 0:10000): '))
        # inputRange = QTextEdit()  # 获取范围
        # inputRange.setMaximumSize(QtCore.QSize(256, 30))
        # formLayout.addRow(inputRange)
        StartX = QSpinBox()
        StartX.setMaximum(100_0000)
        StepX = QSpinBox()
        StepX.setMaximum(100_0000)
        formLayout.addRow('Start', StartX)
        formLayout.addRow('Step ', StepX)
        button = QDialogButtonBox(QDialogButtonBox.Ok)
        formLayout.addRow(button)
        dialog.show()

        button.clicked.connect(dialog.accept)

        if dialog.exec() == QDialog.Accepted:
            return comboBox1.currentText(), comboBox2.currentText(), StartX.text(), StepX.text()
        else:
            return ()

运行后的结果

在这里插入图片描述
这样就完成一个简单的多数据源获取的自定义Dialog

几个注意点:

  1. 绑定信号和槽
    button.clicked.connect(dialog.accept)
    这里的accept不能够添加括号, 否则会报错
  2. button也可以用更加常用的PushButton来实现
  3. QDialog.Accepted一定是大写的A, 跳出的提示也有小写的a, 这里一定要区分, 其实这里就是1
  4. dialog.exec()这里就相当于widget.exec() 用来保持Dialog不关闭并回去返回的信号
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qyj980825

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值