PyQt5 - QInputDialog 小部件

  • 简述

    这是一个预配置的对话框,带有一个文本字段和两个按钮,确定和取消。用户单击 Ok 按钮或按 Enter 后,父窗口收集文本框中的输入。
    用户输入可以是数字、字符串或列表中的项目。还显示提示用户他应该做什么的标签。
    QInputDialog类具有以下静态方法来接受来自用户的输入 -
    序号 方法和描述
    1
    getInt()
    为整数创建一个微调框
    2
    getDouble()
    可以输入浮点数的微调框
    3
    getText()
    用于键入文本的简单行编辑字段
    4
    getItem()
    用户可以从中选择项目的组合框
  • 例子

    以下示例实现了输入对话框功能。顶层窗口有三个按钮。他们的clicked()信号通过连接的插槽弹出 InputDialog。
    
    items = ("C", "C++", "Java", "Python")
    item, ok = QInputDialog.getItem(
       self, "select input dialog", "list of languages", items, 0, False
    )
       if ok and item:
          self.le.setText(item)
          
       def gettext(self):
          text, ok = QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')
          if ok:
             self.le1.setText(str(text))
             
       def getint(self):
          num,ok = QInputDialog.getInt(self,"integer input dualog","enter a number")
          
          if ok:
             self.le2.setText(str(num))
    
    完整的代码如下 -
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    
    class inputdialogdemo(QWidget):
       def __init__(self, parent = None):
          super(inputdialogdemo, self).__init__(parent)
          
          layout = QFormLayout()
          self.btn = QPushButton("Choose from list")
          self.btn.clicked.connect(self.getItem)
          
          self.le = QLineEdit()
          layout.addRow(self.btn,self.le)
          self.btn1 = QPushButton("get name")
          self.btn1.clicked.connect(self.gettext)
          
          self.le1 = QLineEdit()
          layout.addRow(self.btn1,self.le1)
          self.btn2 = QPushButton("Enter an integer")
          self.btn2.clicked.connect(self.getint)
          
          self.le2 = QLineEdit()
          layout.addRow(self.btn2,self.le2)
          self.setLayout(layout)
          self.setWindowTitle("Input Dialog demo")
          
       def getItem(self):
          items = ("C", "C++", "Java", "Python")
          
          item, ok = QInputDialog.getItem(
             self, "select input dialog", "list of languages", items, 0, False
          )
             
          if ok and item:
             self.le.setText(item)
             
       def gettext(self):
          text, ok = QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')
          
          if ok:
             self.le1.setText(str(text))
             
       def getint(self):
          num,ok = QInputDialog.getInt(self,"integer input dualog","enter a number")
          
          if ok:
             self.le2.setText(str(num))
             
    def main(): 
       app = QApplication(sys.argv)
       ex = inputdialogdemo()
       ex.show()
       sys.exit(app.exec_())
       
    if __name__ == '__main__':
       main()
    
  • 输出

    上面的代码产生以下输出 -
    QInputDialog 小部件输出