Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用带有输入对话框的QCompleter?_Python_Pyqt_Pyqt5_Qcompleter_Qinputdialog - Fatal编程技术网

Python 如何使用带有输入对话框的QCompleter?

Python 如何使用带有输入对话框的QCompleter?,python,pyqt,pyqt5,qcompleter,qinputdialog,Python,Pyqt,Pyqt5,Qcompleter,Qinputdialog,我正在编写一个Python应用程序,用户可以在对话框中输入字符串。如何使用QCompleter简化输入 我已经在不同的网站上搜索过了,并且从 但是找不到解决此问题的任何帮助 在我看来,QCompleter似乎只适用于QLineEdit和QComboBox。(请证明我错了) 如果有人能给我看一些代码示例,告诉我如何处理这个问题,这将对我有很大帮助 如果无法在QInputDialog中使用QCompleter,你们有解决方法吗 非常感谢=)有两种可能的解决方案: 使用以下内容,通过窗口小部件之间的

我正在编写一个Python应用程序,用户可以在对话框中输入字符串。如何使用QCompleter简化输入

我已经在不同的网站上搜索过了,并且从 但是找不到解决此问题的任何帮助

在我看来,QCompleter似乎只适用于QLineEdit和QComboBox。(请证明我错了)

如果有人能给我看一些代码示例,告诉我如何处理这个问题,这将对我有很大帮助

如果无法在QInputDialog中使用QCompleter,你们有解决方法吗


非常感谢=)

有两种可能的解决方案:

  • 使用以下内容,通过窗口小部件之间的父子关系获取
从PyQt5导入QtCore、QtGui、qtwidget
类小部件(qtwidts.QWidget):
def uuu init uuu(self,parent=None):
超级(小部件,自我)。\uuuuu初始化\uuuuuuu(父级)
button=QtWidgets.QPushButton(“按我”,单击=自我。再次单击)
lay=qtwidts.QVBoxLayout(self)
lay.addWidget(按钮)
@QtCore.pyqtSlot()
def onClicked(自):
QtCore.QTimer.singleShot(0,self.onTimeout)
ian,okPressed=qtwidts.QInputDialog.getText(
自我,“伊恩”,“请输入伊恩:”
)
@QtCore.pyqtSlot()
def onTimeout(自我):
dialog=self.findChild(qtwidts.QInputDialog)
如果对话框不是“无”:
le=dialog.findChild(qtwidts.QLineEdit)
如果le不是无:
单词=[“阿尔法”、“欧米茄”、“奥米克龙”、“泽塔”]
completer=qtwidts.QCompleter(单词,le)
lesetcompleter(completer)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=Widget()
w、 调整大小(320240)
w、 show()
sys.exit(app.exec_())
  • 不要使用静态方法并使用相同的元素创建:
从PyQt5导入QtCore、QtGui、qtwidget
类小部件(qtwidts.QWidget):
def uuu init uuu(self,parent=None):
超级(小部件,自我)。\uuuuu初始化\uuuuuuu(父级)
button=QtWidgets.QPushButton(“按我”,单击=自我。再次单击)
lay=qtwidts.QVBoxLayout(self)
lay.addWidget(按钮)
@QtCore.pyqtSlot()
def onClicked(自):
dialog=QtWidgets.QInputDialog(self)
对话框.setWindowTitle(“IAN”)
setLabelText(“请输入IAN:”)
dialog.setTextValue(“”)
le=dialog.findChild(qtwidts.QLineEdit)
单词=[“阿尔法”、“欧米茄”、“奥米克龙”、“泽塔”]
completer=qtwidts.QCompleter(单词,le)
lesetcompleter(completer)
好的,文本=(
dialog.exec_uz()==qtwidts.QDialog.Accepted,
dialog.textValue(),
)
如果确定:
打印(文本)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=Widget()
w、 调整大小(320240)
w、 show()
sys.exit(app.exec_())

非常感谢您的快速回答!我真的很感激。我使用了你的第一个建议,它对我非常有效。编辑:在这一行dialog.exec_()==qtwidts.QDialog.Accepted上,您需要使用QInputDialog而不是QDialog。
ian, okPressed = QInputDialog.getText(self, "IAN", "Please enter IAN:")